JavaFX Model Daten übergeben

Tobias ST

Mitglied
Hallo Zusammen,

ich stehe mal wieder vor einem Problem:
Ich habe mit Screenbuilder zwei fxml Dateien erstellt.
In beiden habe ich folgenden schnipsel
Code:
fx:controller="tt.liveticker.windows.controller.*Controller"

Nun möchte möchte ich, dass ein bzw auch mehre Model(s), in dem entsprechenden Controller, bekannt machen um die Inhalte der Model(s) bekannt machen.
Aber wie mache ich es am besten???

Hier noch der Code wie ich die gui Aufrufe
Code:
AnchorPane root1 = FXMLLoader.load(getClass().getResource("/tt/liveticker/windows/gui/Aufstellung.fxml"),sprachen);
 
Nun möchte möchte ich, dass ein bzw auch mehre Model(s), in dem entsprechenden Controller, bekannt machen um die Inhalte der Model(s) bekannt machen.
Ich verstehe den Satz nicht. Nicht mal ansatzweise. Was willst du? Ein zentrales Model an jede konkrete Controller-Klasse anhängen?
Wenn ja: Schau dir mal das Beispiel hier in meinem Github-Repo an, wo ich mir so ein paar Code-Schnipsel hinterlegt habe:
https://github.com/bgmf/poc/blob/ma.../dzim/tests/fx/MainWithControllerFactory.java
Macht eingentlich genau dass: Erstellt die konkrete Controller-Instanz, der man dann - bevor ihre #initialize-Methode aufgerufen wird - Daten übergeben kann (Constructor, Setter, wie auch immer). Ich verwende jedoch meist Guice für Dependecy Injection, also das automatische Einfügen von Daten (wie etwa dem Model, oder Business-Logik, etc.) -> Beispiel: https://github.com/bgmf/poc/tree/master/guice-fx/src/main/java/eu/dzim/guice/fx

BTW: Ich hoffe mal das Asterix im Controller-Namen hast du nur verwendet, um hier den Code anzukürzen:
fx:controller="tt.liveticker.windows.controller.*Controller"
Ja? Nein?
 
BTW: Ich hoffe mal das Asterix im Controller-Namen hast du nur verwendet, um hier den Code anzukürzen:
Ja? Nein?
Ja das war nu zum Abkürzen.

Zu dem was ich will:
Ich will eine Model in einer View1 erstellen.
Dieses Model muss dann von anderen Views bearbeitet werden können. Dazu müssen die die Controller der Views ja das Model "kennen" nur leider bekomme ich es nicht übergeben.

Ich werde mal die obigen Beispiele anschauen und mich ggf. nochmal melden
 
Naja, was du am einfachsten machen kannst, ist ein globales Modell, was über die von mir beschriebenen Methoden an die einzelnen Views gereicht werden kann. Dadurch kannst du die Views indirekt verbinden. Idealerweise (für JavaFX) enthält das Modell Properties (StringProperty, LongProperty, ...). Daran kann sich jede View binden/auf Events hören/diese Updaten.
Alternativ ginge auch ein Event-System (z.B. über einen zentralen Event-Bus), aber auch den musst du an die Views reichen - und Singleton-Instanzen, die man am einfachsten verwenden könnte, sind eher ein "Code-Smell". Möglich und einfach, aber nicht schön/sauber.
 

Zurück
Oben