SWT TreeViewer: Daten aus Model gelöscht... trotzdem noch im Baum

Düark

Aktives Mitglied
Hi, habe ein mysteriöses Problem:
habe einen JFace TreeViewer mit ContentProvider.
Wenn ich Daten aus meinem Model lösche, den Viewer refreshe, habe ich trotzdem noch "Geister-Items" in meinem Baum: Wenn ich mit der Maus über den Baum fahre, sehe ich noch unsichtbare Items, d.h. nur die Selektion, ohne Text und so.
Mein Model wird nach dem Refresh vom ContentProvider richtig abgefragt und liefert auch die korrekten Daten. Scheint nur so als wenn der Baum das nicht alles mitbekommt.
Wenn ich danach mit viewer.getTree().getItems() die Items hole, sehe ich auch (teilweise) noch alte Items. Hat jemand eine Idee?
 

maestr0

Bekanntes Mitglied
Dann muss irgendwas mit dem Löschen nicht ganz richtig sein.
Zeig mal ein bisschen code, wie du den treeviewer leerst.

Java:
treeViewer.remove(treeViewer.getInput());
 
Zuletzt bearbeitet:

Düark

Aktives Mitglied
Den TreeViewer selber leere ich ja nicht, sondern ich schmeisse die zu löschenden Elemente aus meinem Model raus. Mein Model hat eine Methode, die eine ArrayList mit Elementen zurückgibt. In dieser Liste sind nach dem Löschen auch nur noch die beabsichtigten Elemente. Dann rufe ich treeViewer.refresh() auf, und kann beobachten, wie der ContentProvider genau diese Liste anfordert (in getElements / getChildren...). Da wird sie dann verarbeitet, und am Ende gibt der ContentProvider ein korrektes Array zurück. Nur stimmt das dann nicht mit dem überein, was dargestellt wird.
Ein treeViewer.refresh() müsste aber doch in diesem Falle reichen, oder?
 

Düark

Aktives Mitglied
Ich habe jetzt einen Workaround gefunden der zwar gruselig anmuted, aber funktioniert. Dazu habe ich die refresh-Methode des TreeViewers überschrieben.
Java:
public void refresh(){
  setSelection((ISelection)null);
  getTree().clearAll(true);
  super.refresh();
			
  // dispose obsolete
  TreeItem[] items = getTree().getItems();
  for(TreeItem item : items){
     if(!item.isDisposed() && item.getText().equals("")){
         item.dispose();
       }
     }
   }
  };
}
Das ganze funktioniert so, daß erstmal die Selection gelöscht wird, weil die auch noch auf alte Sachen verweisen könnte.
Dann wird clearAll() aufgerufen, was bewirkt dass alle Labels (Text / Icons) des Trees gelöscht werden. Dann wird die eigentliche refresh-Methode des Viewers aufgerufen, die wie in meinem Problem beschrieben, zwar noch obsolete Items übrig lässt, aber nur die gültigen Items wieder mit Labels versieht. Am Ende gehe ich deswegen nochmal über alle Items des Trees und dispose die, die keinen Text mehr haben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W SWT hover-background-problem with first column in TreeViewer AWT, Swing, JavaFX & SWT 0
B Treeviewer SWT AWT, Swing, JavaFX & SWT 2
R SWT TreeViewer neuen Input setzen AWT, Swing, JavaFX & SWT 3
B SWT TreeViewer dynamische Anzeige von Icons AWT, Swing, JavaFX & SWT 3
maestr0 Treeviewer nach Kategorien sortieren AWT, Swing, JavaFX & SWT 6
G SWT TreeViewer - drop listener austauschen AWT, Swing, JavaFX & SWT 2
T TreeViewer knoten manuell umsortieren AWT, Swing, JavaFX & SWT 4
F SWT Drag and Drop im TreeViewer AWT, Swing, JavaFX & SWT 4
K SWT treeviewer scrollen AWT, Swing, JavaFX & SWT 8
A SWT Eclipse JFace Binding TreeViewer AWT, Swing, JavaFX & SWT 4
L SWT Filter zur TreeViewer hinzufügen AWT, Swing, JavaFX & SWT 9
T SWT TreeViewer select columns AWT, Swing, JavaFX & SWT 2
V SWT TreeViewer Drag'n'Drop LocalSelectionTransfer AWT, Swing, JavaFX & SWT 10
R TreeViewer in SWT: Default Selection eines Items AWT, Swing, JavaFX & SWT 3
S Drag&Drop bei TreeViewer AWT, Swing, JavaFX & SWT 10
G treeviewer aus tabelle AWT, Swing, JavaFX & SWT 8
B TreeViewer für das Dateisystem, der sich selbst aktualisiert AWT, Swing, JavaFX & SWT 8
S SWT/JFace TreeViewer: Rootknoten anzeigen AWT, Swing, JavaFX & SWT 10
byte SWT -> JFace: TreeViewer AWT, Swing, JavaFX & SWT 4
S SWT/JFace TreeViewer-Problem AWT, Swing, JavaFX & SWT 2
R SWT-TreeViewer Doppelklick verarbeiten AWT, Swing, JavaFX & SWT 4
V SWT (JFace): Foreground des Textes im TreeViewer ändern. AWT, Swing, JavaFX & SWT 2
H JTabel - RowFilter Daten für Berechnung filtern AWT, Swing, JavaFX & SWT 6
M Daten zufällig Einlesen aus einer Datei (binäres Format) AWT, Swing, JavaFX & SWT 7
W Nullpointer Exception beim übertragen von Daten von Scene zu Scene AWT, Swing, JavaFX & SWT 6
W Daten von Controller zu Controller übertragen AWT, Swing, JavaFX & SWT 7
D Columns unabhängig voneinander mit Daten füllen JavaFx AWT, Swing, JavaFX & SWT 1
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
T Anbinden der Tabelle an die Daten AWT, Swing, JavaFX & SWT 5
F JavaFX Tabelle mit Daten füllen AWT, Swing, JavaFX & SWT 9
A JavaFX Daten in eine HTML-Table mit JS schreiben AWT, Swing, JavaFX & SWT 3
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
ralfb1105 JavaFX Daten zwischen Controller "austauschen" AWT, Swing, JavaFX & SWT 65
B AWT Bot um Daten auf Website einzugeben und die Antwort zu bekommen AWT, Swing, JavaFX & SWT 2
L Daten bearbeiten ohne GUI zu blockieren - daten haltung/zurück geben AWT, Swing, JavaFX & SWT 15
ralfb1105 Swing JComboBox update der Daten AWT, Swing, JavaFX & SWT 8
ralfb1105 Swing Dynamischer Graph zum anzeigen Perfomance Daten AWT, Swing, JavaFX & SWT 35
D MySQL Daten in JTable anzeigen AWT, Swing, JavaFX & SWT 2
K TreeTableView (cellFactory) - wie Daten in Spalten einfügen AWT, Swing, JavaFX & SWT 0
A JTable mit Daten füllen AWT, Swing, JavaFX & SWT 1
J TableView Daten werden nicht ausgegeben AWT, Swing, JavaFX & SWT 9
A Swing Wie Daten in der Form speichern? Array oder ArrayList AWT, Swing, JavaFX & SWT 2
C Swing Daten in JTable wiedergeben per TableModel und MVC Pattern AWT, Swing, JavaFX & SWT 16
T JavaFX Model Daten übergeben AWT, Swing, JavaFX & SWT 4
D Swing Größe einer JComboBox im GridBagLayout aufgrund der maximalen Länge der enthaltenen Daten AWT, Swing, JavaFX & SWT 7
J JavaFX Tableview Daten hinzufügen aus anderer Klasse AWT, Swing, JavaFX & SWT 7
J Tableview Daten hinzufügen und aktualisieren AWT, Swing, JavaFX & SWT 5
S AWT Daten über TextField und Button in array speichern AWT, Swing, JavaFX & SWT 5
G Event Handling TableView daten in ein neues Fenster herauslesen? AWT, Swing, JavaFX & SWT 3
S JavaFX (Best Practise) Daten zwischen Controllern austauschen AWT, Swing, JavaFX & SWT 1
thet1983 JavaFX TableView Objekt Daten anzeige AWT, Swing, JavaFX & SWT 2
L JavaFX Verzögerung beim Laden von Daten AWT, Swing, JavaFX & SWT 6
L Daten in neuem Fenster AWT, Swing, JavaFX & SWT 2
Tort-E JavaFX Daten an WebView Komponente AWT, Swing, JavaFX & SWT 1
I JTable: Doppelklick auf Table soll neues Fenster öffnen und Daten aus JTable anzeigen AWT, Swing, JavaFX & SWT 4
S JTable Daten aus Array AWT, Swing, JavaFX & SWT 9
M Java FX Daten an Controller übergeben AWT, Swing, JavaFX & SWT 3
S JList ist leer, aber DefaultListModel hat die Daten? AWT, Swing, JavaFX & SWT 9
M JavaFX Von FXML-Controllerdatei Daten zurückgeben AWT, Swing, JavaFX & SWT 6
F JavaFX Daten aus Tabelle in ComboBox AWT, Swing, JavaFX & SWT 9
B Swing JTable mit Daten - Reihen-Größe anpassen AWT, Swing, JavaFX & SWT 0
D Applet GWT speichert Daten nicht in Datenbank AWT, Swing, JavaFX & SWT 2
S SWT In Listen den Einträgen Daten zuordnen AWT, Swing, JavaFX & SWT 2
T SWT Table (mit Spinner Spalte) Daten auslesen AWT, Swing, JavaFX & SWT 4
F Swing JTable: Daten voreinstellen AWT, Swing, JavaFX & SWT 4
B Daten in eine JTable schreiben AWT, Swing, JavaFX & SWT 3
H Swing JfreeChart aktualisieren - mit daten aus thread AWT, Swing, JavaFX & SWT 3
J valueChanged()-Methode liefert unbrauchbare Daten AWT, Swing, JavaFX & SWT 4
B Datenübergabe zwischen Tabs und Daten speichern AWT, Swing, JavaFX & SWT 2
D Daten von JDialog an JTable in JFrame übergeben AWT, Swing, JavaFX & SWT 7
O JTable zeigt die alte Daten wieder AWT, Swing, JavaFX & SWT 23
H JTable zeigt keine Daten an AWT, Swing, JavaFX & SWT 5
M Swing Daten von JPanel zu JFrame senden AWT, Swing, JavaFX & SWT 13
C Swing JTable Daten einfügen AWT, Swing, JavaFX & SWT 6
Ollek IndexOutOfBoundsException bei neuen Daten in JTable AWT, Swing, JavaFX & SWT 13
J Swing JTable-Daten Speichern und bei zeilen-änderung beibehalten. AWT, Swing, JavaFX & SWT 6
A Daten umherschieben zwischen zwei Klassen AWT, Swing, JavaFX & SWT 40
L [SWT] Daten und Bilder drucken AWT, Swing, JavaFX & SWT 2
M Trotz richtiger Daten, falsches Bild wird gezeichnet?! AWT, Swing, JavaFX & SWT 4
O JFrame: Daten alle paar Sekunden aktualisieren AWT, Swing, JavaFX & SWT 3
C Daten aus DB -> JTable aktualisieren klappt nicht AWT, Swing, JavaFX & SWT 16
A Swing(Daten zugreifen) AWT, Swing, JavaFX & SWT 25
S JComboBox - veränderliche Daten AWT, Swing, JavaFX & SWT 6
T Daten mittels ComboBox in ein JTable adden AWT, Swing, JavaFX & SWT 7
Ollek Realisierung: JTable zur Laufzeit mit neuen Daten füllen AWT, Swing, JavaFX & SWT 3
GianaSisters Swing jTable Daten unsichtbar AWT, Swing, JavaFX & SWT 12
T JTree Daten in DB schreiben am besten SQL AWT, Swing, JavaFX & SWT 21
W Daten auf Textfeld in anderer Klasse verwenden AWT, Swing, JavaFX & SWT 4
T Daten der gesamten Woche anzeigen AWT, Swing, JavaFX & SWT 2
D Problem mit JFileChooser -> Daten werden mit anführungsstriche in JTable geschrieben AWT, Swing, JavaFX & SWT 8
H JList zeigt die Daten aus dem Array nicht an! AWT, Swing, JavaFX & SWT 13
E Daten von JDialog nach JFrame übertragen AWT, Swing, JavaFX & SWT 4
K TableModel mit Daten aus Datenbank füllen AWT, Swing, JavaFX & SWT 7
M JTree mit eigenen Knoten - Zugriff auf Daten AWT, Swing, JavaFX & SWT 6
L Swing Daten in JTable aktualisieren AWT, Swing, JavaFX & SWT 5
H Swing Tabelle nach Klick auf Button mit Daten füllen? AWT, Swing, JavaFX & SWT 2
B Swing JList Daten löschen AWT, Swing, JavaFX & SWT 13
R Swing XML Datei in JTree, Problem mit Daten einlesen AWT, Swing, JavaFX & SWT 34
A SWT: Daten in Raster mit Gitternetzlinien darstellen AWT, Swing, JavaFX & SWT 7
C Swing JTextField-Daten über mehrere Dialoge AWT, Swing, JavaFX & SWT 18

Ähnliche Java Themen

Neue Themen


Oben