Verwendung von JavaFX Platform.runLater und Zugriff auf die Benutzeroberfläche von einem anderen Thread aus
Ich habe ein paar Fragen zuPlatform.runLater
. Ich habe eine JavaFX-Anwendungsklasse. In dieser Klasse führe ich einen Thread aus (Der Thread liest Daten von einem Netzwerk-Socket).
Jetzt erstelle ich eine neueStage
Innerhalb des Threads löst das System eine Ausführung aus (JavaFX-Event-Dispatcher-Thread und mein Netork-Read-Thread stimmen nicht überein). Ich verstehe dieses Verhalten.
Aber die andere Seite ist, ich füge den Text vom Netzwerkleser an einen vorhandenen anTextArea
oder einige Elemente in a hinzufügen / entfernenListView<String>
- das macht keine ausnahme - warum? Ich dachte, JavaFX ist Singlethreaded (The UI Library Part). Ist das dasselbe wie in Swing: Manchmal funktioniert es und manchmal hast du nur Müll (weil EDT)?
Meine Fragen:
Wann löst der JavaFX-Event-Dispatcher-Thread eine Ausnahme aus und wann nicht?Sind die irgendwelche guten Unterlagen dazuGibt es eine einfachere (kürzere und sauberere) Art der Verwendung?Platform.runLater
mit einerrun()
Methode ? In Kombination mit einem Versuchsfang (oder Mehrfachfang) sieht es sehr seltsam ausIch kenne die Verwendung vonPlatform.runLater
in einem Thread ist nicht so schön (Design-Lösung)