JavaFX: TabPane ObservableList Binding

Wie mand eine TabPane dynamisch mit Tabs befüllt, möchte ich in diesem Tutorial erläutern.

Ziel

Das Ziel soll es sein, das durch ein Klick auf einen Menüpunkt in einer MenuBar ein neuer Tab in der TabPane erzeugt wird.

Erste Schritte

Als erstes benötigt man ein Model wo die Liste mit den Tabs abgelegt wird. Und von dort wird dann die Liste referenziert.

Nachdem man das Model erzeugt hat, muss nun die Listen aus der TabPane und dem Model zusammengefügt werden. (Mergen) Dazu habe ich im Internet eine brauchbare Lösung gefunden.

Quelle: http://stackoverflow.com/questions/26636199/merge-multiple-observablelist-into-one-list

Die oben genannte Methode muss nun nach der Inizialisierung des Controllers und des setzen des Modells aufgerufen werden.

Für eine bessere Lesbarkeit habe ich mir erst die ObservableList mit den Tabs aus der TabPane geladen und als lokale Variable abgelegt.
Die Methode merge wird hier mit der ObservableList  aus der TabPane sowie mit der ObservableList  aus dem Model aufgerufen.

Nun kann in der ActionMethode zum MenuItem ein neuer Tab erzeugt werden.

Ergebnis

Das Ergebnis ist, das die beiden Listen „miteinander verbunden“ wurden es also eine art Binding zwischen diesen Listen gibt. Es ist also nicht mehr nötigt wie beim MVC Pattern bekannt programmatisch in diesen Updatevorgang einzugreifen sondern eher wie JSF wo die Componenten mit einer Bean verknüpft werden.

Nächste Schritte

Nächste Schritte wären hier, ein Tab zu erzeugen welches aus einer FXML geladen wird.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.