2017-12-25 6 views
0

Ich bin ein neuerer in SWT und JFace, vor kurzem habe ich JFace tableviewer in meinem Projekt verwendet. Und ich muss Elemente durch eine Lösch-Schaltfläche löschen. Aber es funktioniert nicht, wenn ich den Tableviewer nach dem Löschen aktualisiere. Ich möchte den reason.My Code wissen, zeigt der folgende Liste:JFace tableviewer item delete kann nicht aktualisiert werden

btnDeleteConstraint.addSelectionListener(
      new SelectionAdapter() { 
      @Override 
      public void widgetSelected(SelectionEvent e) { 
      ISelection selection = tableViewer.getSelection(); 
      logger.debug("datatype selected"); 
      if (selection != null || selection instanceof 
      IStructuredSelection) { 
      IStructuredSelection sel = (IStructuredSelection) selection; 
      Iterator iterator = sel.iterator(); 
      while(iterator.hasNext()) { 
       Object obj = iterator.next(); 
       tableViewer.remove(obj); 
      } 

      tableViewer.refresh(); 
     } 

    } 
}); 

und ich verwende eine andere Methode namens update() Eingang zu setzen und die Tabelle am Ende aktualisieren:

public void update() 
{ 
    tableViewer.setInput(DataTypeFactory. 
    getInstance().getCastList(wizard.getSourceInfo().getDBType())); 
    tableViewer.refresh(); 
} 

Antwort

0

Wenn Sie refresh nennen Die Tabelle wird von Ihrem "Inhaltsanbieter" aktualisiert. Wenn Sie also Dinge löschen, müssen Sie die Daten aktualisieren, die Ihr Inhaltsanbieter in seiner Methode getElements zurückgibt.

+0

Also muss ich die Tabelle nicht jedes Mal aktualisieren, wenn ich sie modifiziere, ist das korrekt? – khunnie

+0

Nein, Sie müssen nicht aktualisieren. Sie sollten jedoch die Daten des Inhaltsanbieters mit der angezeigten Tabelle synchronisieren. –

Verwandte Themen