プロジェクトに JavaFX を使用しています。起動時にデータを要求するプロンプトが表示され、ネットワーク クラスはこれらのデータを使用してサーバーへの接続を確立します。私のネットワーク クラスは非同期で動作しており、コールバックで応答を受け取ります。応答に応じて、コールバックから新しいウィンドウ (ステージ) を開きたいと考えています。
私のトリガーを実行mainStage.setScene()
すると、期待どおりに例外が発生します-JavaFXアプリケーションスレッドから呼び出されたのではなく、使用する必要がありますPlatform.runLater()
が:
Platform.runLater(new Runnable() {
@Override
public void run() {
System.out.println("run");
}
});
決して印刷されません"run"
。なんで?このaccountDataPrompt.login()
関数は JavaFX の start-function の最後にあり、前述したように、ネットワーク接続は非同期で実行されます。プロンプトは、カスタム JavaFX ダイアログ ( JavaFX UI Sandbox ) です。