JavaFX - 未调用runLater Runnable

Nic*_*lai 1 java javafx runnable

我正在使用JavaFX进行项目.在启动过程中,我有一个提示,要求提供数据,我的网络类与这些数据建立了与服务器的连接.我的网络类异步工作,我在回调中得到响应.根据响应,我想从回调中打开一个新窗口(阶段).

执行我mainStage.setScene()按预期触发异常 - 不是从JavaFX应用程序线程调用,我必须使用Platform.runLater()但是:

Platform.runLater(new Runnable() {          
    @Override
    public void run() {
        System.out.println("run");
    }
});
Run Code Online (Sandbox Code Playgroud)

它从不打印"run".为什么?该accountDataPrompt.login()函数位于我的JavaFX启动函数的末尾,正如我所说,网络连接是异步运行的.提示符是自定义JavaFX对话框(JavaFX UI Sandbox).

小智 7

完成所有场景后,将停止JavaFX应用程序线程.所以你的下一个Platform.runLater()将不起作用.

Platform.setImplicitExit( false );
Run Code Online (Sandbox Code Playgroud)

使用上面的代码.这将解决问题.