Java JXTreeTable soll bei Änderung JTree updaten

#basTi

Commodore Pro
Registriert
Aug. 2005
Beiträge
4.765
Hallo zusammen,

ich habe momentan folgende Situation:
Einen JXTreeTable, in welchem ich auch editieren kann ( einfügen, löschen, ändern ).
Zudem habe ich ein JTree welcher im prinzip nur eine andere View von dem JXTreeTable ist.
(Ähnlich dem Windows Explorer. Rechts die Detailansicht wäre mein Treetable und links nur ein tree zur übersicht)

Wie bekomme ich es nun am schlausten hin, dass die beiden Komponten immer synchronisiert sind?
 
Wenn beide Trees das selbe darstellen, kannst du an der gemeinsamen Datenquelle (Model) ansetzen: Wenn diese geändert wird (egal von wo) musst du die Views, die darauf basieren, benachrichtigen.
 
Ich hatte gehofft, dass es evtl eine leichte möglichkeit gibt beide zu verbinden.
Denn so müsste ich für jedes event (insert, remove, update,... ) einen listener schreiben, welcher dann selbiges im JTree updated.
 
Die leichte Möglichkeit wäre ein allgemeines DataChanged event zu feuern, dass die Trees neu aufbaut. Je nach Größe geht das ganz fix. Ansonsten musst du dir halt die Arbeit machen, dem Programm weniger Arbeit zu machen ;)

Wenn man ein bisschen in der Dokumentation stöbert sieht man aber, dass das Interface TreeTableModel wiederum das TreeModel Interface implementiert. D.h. ein JTree akzeptiert auch ein TreeTableModel. Somit kannst du ein Model für beide Views benutzen.
 
Selbes Model geht leider nicht, da der tree die Daten anders anzeigen soll als der treetable ( nur Ordner )
 
Die Models könnten sich auch gegenseitig benachrichtigen: Wird z.B. beim TreeTableModel ein DataChanged Event ausgelöst, feuerst du dieses Event auch beim TreeModel und umgekehrt.
 
Und wie funktioniert das? :)
 
Schau dir mal DefaultTreeModel und TreeModelListener an. Die Models können sich damit gegenseitig belauschen. Wenn du in dem einen Model ein fireSomethingChanged() machst, bekommt das andere Model dies automatisch mit.
 
Zurück
Oben