2013-11-03 13 views
5

Ich habe ein Problem mit Java FX-Anwendungs-Thread. Hier ist ein Pseudo-Code:Wie funktioniert der JavaFX-Anwendungsthread?

showMenu(); 
//Contoller which waits for action(pressing button)... 
showLoadingPic(); 
Thread.sleep(2000); 
showMap(); 

Das Problem ist, dass der Schlaf in Fenstern auftritt, die in showMenu angezeigt wird(), showLoadingPic() ist überhaupt nicht dargestellt ist, und am Ende Fenster in showmap() ist gezeigt.

Die Szene in showLoadingPic hat einen Fortschrittsbalken, der 2 Sek. Gleichzeitig mit Thread.sleep (2000) läuft.

So scheint es wie javafx Anwendung Thread-Blöcke ShowLoadingPic() und showLoadingPic() läuft im Hintergrund.

Kann mir jemand helfen, das zu beheben?

Vielen Dank im Voraus!

Antwort

9

Es gibt einen Java FX-Ereignisversand-Thread, der alle GUI-bezogenen Aufgaben behandelt. Sie müssen alle UI-Komponenten in diesem Thread aktualisieren. Lange laufende Aufgaben, wie Thread.sleep sollten in diesem Thread nie ausgeführt werden, da Windows hängt, und die GUI wird eingefroren werden.

Führen Sie Ihren gesamten Code im Hauptthread der Anwendung aus und führen Sie nur GUI-Tasks im JavaFX-Thread aus, indem Sie Platform.runLater aufrufen.

Referenzen zu diesem Thema: