JavaFX (Best Practise) Daten zwischen Controllern austauschen

Saheeda

Top Contributor
Hi,

was ist in JavaFX Best Practise, um Daten zwischen Controllern auszutauschen? Ich habe beispielsweise eine Liste mit Items und beim Klick auf eines davon soll sich ein neues Fenster mit Detailinformationen öffnen.
Ich arbeite vor allem mit Webanwendungen, dort könnte ich die ID o.Ä. einfach per URL mitgeben.

Wie würde man sowas lösen? Eventgesteuert? Statische Variablen?
Auf StaackOverflow habe ich dies hier gefunden:
http://stackoverflow.com/questions/14187963/passing-parameters-javafx-fxml
Der Beitrag ist aber schon n paar Jahre alt und es könnte ja sein, dass es inzwischen bessere Wege gibt.
 

dzim

Top Contributor
Der Artikel ist zwar schon älter, aber immer noch aktuell. Ich hab da vor kurzem auch noch dran herum editiert :)

Es hängt davon ab, was du machen möchtest. Wie kompliziert es sein soll und wie gut lesbar.

Ich habe bisher 5 Varianten ausprobiert:

1) Daten per Setter an die Controller weiterreichen. Wenn du dir in deiner obersten Klasse eine Instanz eines "Application Models" erstellst, das idealerweise Gebrauch von JavaFX-Properties (für Databinding) macht, kannst du dies implizit alles darüber steuern. Du musst nur das Modell noch in den Controller bringen. Beispielsweise so, wie hier beschrieben: http://www.java-forum.org/thema/methode-nach-initialize-aufrufen.172667/
Vorteil: Einfach umzusetzen. Leichtgewichtig. Wenn man für seine Controller Interfaces verwendet auch nachvollziehbar und eventuell kann man die ControllerFactory (a.k.a. das am FXMLLoader zu registrierende Callback) auch wiederverwenden (auch weiter injizieren).
Nachteil: Oldskool und vieeeeel zu simpel! ;):D:p

2) EventBus (wird kurz auf StackOverflow) genannt. Einen halbwegs gescheiten und flexiblen Eventbus kann man sich recht schnell zusammenschrauben. Es gibt sicher auch gute minimalistische Bibliotheken dafür.
Nachteil, wie ich finde: Ist bei kleinen Anwendung mit wenigen Daten, noch gut zu händeln. Artet die Anwendung aus (unsere hat jetzt knapp 20'000 Zeilen), kann die Übersichtlichkeit darunter leiden.
Vorteil: Sehr lose Kopplung der Komponenten.

3) Spring Boot - Dependency Injection: Das Projekt, dass ich dort gemacht hab, war eigentlich nur zum Spass. Hab versucht eine paralell entwickelte Web-Anwendung als Desktop-Anwendung nachzubauen. Natürlich mit Maven, natürlich mit Native Bundle Build :D (sprich: Am Ende kommt eine eigenständige Applikation mit gebundeltem JRE raus - siehe javapackager).
Vorteil: Kann man wunderbar Komponenten voneinander trennen. MVC oder MVVM lassen sich gut umsetzen.
Nachteil: Spring Boot ist schon recht heavy. Kann sein, dass es den Startvorgang unnötig verlängert. Kommt mir zumindest so vor.

4) Guice. Gestern mal probiert, weil ich es immer mal machen wollte. Nachdem ich kapiert hab, wie ich am besten einen FXMLLoaderService erstelle (das habe ich bei der SpringBoot-Variante gelernt), war es eine Sache von 30 Minuten (auch wenn ich Guice noch nicht gut genug kenne, um damit ein Pro zu sein).
Nachteil: Fällt mir gerade keiner ein.
Vorteil: Dependency-Injection-Leichtgewicht. (siehe Nachteil Spring Boot)

5) Eclipse e4 Dependency Injection / Declarative Services: Ist am längsten her. Hier eine Anwendung ohne das sonst übliche e4 "Gerümpel" (e4 kann sehr stark von der UI abstrahieren und braucht dann spezielle Renderer für ein konkretes GUI-Framework wie Swing/AWT, SWT oder JavaFX) zu bauen, ist recht aufwendig. Aber dank extrem loser Kopllung und der Möglichkeit Plugins out of the Box zu ermöglichen und zur Laufzeit hinzuzufügen oder zu entfernen, ist schon eine feine Sache.
Vorteil: Flexibel bis zum umfallen!
Nachteil: Eclipse-Doku... Mühsam. Initial recht hoher Aufwand, ab da aber recht einfach.

Für alles ausser 1 und 5 kann ich Code-Schnipsel liefern (1 nicht, weil bereits im Forum diskutiert, 5 nicht, weil 3 Jahre alt und nicht gewartet). Zu 3 findet man etwas im StackOverflow-Artikel verlinkt. Kann es aber dennoch posten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Best-Practise: JTable Text in Zelle zu groß AWT, Swing, JavaFX & SWT 2
Y Swing Best practise Tabbedpanes AWT, Swing, JavaFX & SWT 7
S Swing JFileChooser best. Ordner wie Dateien behandeln AWT, Swing, JavaFX & SWT 4
V Java FX POJO aus Datenbank in FX TableView / Best Practice AWT, Swing, JavaFX & SWT 0
kaoZ Swing JMenuBar, Preferences, Properties... und viele andere lustige Dinge (Best Practice) AWT, Swing, JavaFX & SWT 15
M JavaFX CellFactory Best Practice AWT, Swing, JavaFX & SWT 1
O Swing Best Practices ? AWT, Swing, JavaFX & SWT 8
A Best practice für konkretes Layout AWT, Swing, JavaFX & SWT 10
W JLabel-Text ab best. Zeitpunkt nicht mehr verändern AWT, Swing, JavaFX & SWT 2
H Java-GUI - Best Practice? AWT, Swing, JavaFX & SWT 6
A Screenshot eines best. Fensters AWT, Swing, JavaFX & SWT 5
lin ?JDialog?-nur best. Grösse und Position AWT, Swing, JavaFX & SWT 2
T JList: best. Einträge nicht selektierbar machen AWT, Swing, JavaFX & SWT 4
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
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 SWT TreeViewer: Daten aus Model gelöscht... trotzdem noch im Baum AWT, Swing, JavaFX & SWT 4
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
K TableModel Daten übergeben AWT, Swing, JavaFX & SWT 9
Milady Swing Änderung von Daten mit sql AWT, Swing, JavaFX & SWT 2
J Daten aus einer Textdatei in ArrayList holen AWT, Swing, JavaFX & SWT 9
X Swing Daten aus Vector ins TableModel ?? AWT, Swing, JavaFX & SWT 12
T Swing Liste von Daten anzeigen AWT, Swing, JavaFX & SWT 4
S Swing Daten aus Datenbank in JTable AWT, Swing, JavaFX & SWT 2
E JCombobox mit Daten aus DB füllen AWT, Swing, JavaFX & SWT 9
L Daten werden in JTable nicht angezeigt:( AWT, Swing, JavaFX & SWT 6
Milady Annzeigen alle Daten aus der Tabelle AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben