2013-11-03 8 views
5

Java FXアプリケーションスレッドに問題があります。ここで擬似コードは次のとおりJavaFXアプリケーションスレッドのしくみ

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

問題は、睡眠がshowMenu(に表示されるウィンドウ内に発生することがある)、showLoadingPic()は全く示され、SHOWMAP(端ウィンドウではない)であります表示されます。

showLoadingPicのシーンには、Thread.sleep(2000)と同時に2秒間実行されるプログレスバーがあります。

javafxアプリケーションのスレッドブロックshowLoadingPic()とshowLoadingPic()はバックグラウンドで実行されるようです。

誰かがこれを修正するのを手伝ってもいいですか?

ありがとうございます!

答えて

9

GUI関連のすべてのタスクを処理するJava FXイベントディスパッチスレッドがあります。このスレッドのすべてのUIコンポーネントを更新する必要があります。 ウィンドウがハングし、GUIがフリーズになるので、Thread.sleepのような長時間実行されるタスクは、このスレッドで決して実行しないでください。

アプリケーションのメインスレッドですべてのコードを実行し、JavaFXスレッドでGUIタスクのみを実行するには、Platform.runLaterを呼び出します。このトピックに関する

参考文献: