私は本当にjavaFXの初心者ですが、おそらく私は何か不足していますが、私の問題は次のとおりです。Platform.runLaterの実行後に遅延を追加します
私のコードは、この(各メソッドは、GUIの変更を行いますが、最終的な結果はもちろんの最後の方法で与えられる)ようになっています。それぞれの実行の間であれば
public void updateGui()
{
Platform.runLater(() -> {
doFirstStuff();
doSecondStuff();
doThirdStuff();
});
}
それはいいだろうメソッドには、アプリケーションに何が起こったかをユーザーに知らせるために少し遅れていました(1,2秒または3秒)。各メソッド呼び出しの後
Thread.sleep(1000);
が、スレッドはJavaFXのアプリケーションスレッドであるため、結果はひどいです:
私の試みが置かれました。
私の心に今まで来て別の解決策は次のとおりです。
は、このようなRunnableを持つ別のスレッドで各メソッドを実行します。
() -> {
Platform.runLater(() -> {
doFirstStuff();
});
Thread.sleep(1000);
});
とupdateGui()
にnewSingleThreadExecutor()
にタスクを送信して待ちます各タスクの終了のために。しかし、私は知らない、それは良い解決策に見えない。
私の目標を達成する最良の方法は何ですか?
これはどのように機能していますか? 'Platform.runLater(タイムライン::再生); } '初めて見た.. – GOXR3PLUS
@ GoXr3Plus [メソッド参照](https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html)です。 'Platform.runLater(() - > timeline.play())'と同等です。 'timeline.play()'のシグネチャ(パラメータなし、戻り値なし)は 'Runnable'の抽象メソッドのシグネチャと同じであるため、' Runnable.run () 'を返します。 –
ありがとう!ちょうど私が必要なもの!私は両方と、私の 'newSingleThreadExecutor()'ソリューションを試してみましたが、すべて私の目的のためにうまくいきますが、私は 'タイムライン 'の方法がこの種の問題に最適だと思います。はい、バックグラウンドスレッドから 'updateGui()'を呼び出しています(おそらく、指定する必要があります、残念です)。最後のこと: 'KeyFrames'と' Timeline'の 'final'修飾子はなぜですか? –