如何在 JavaFX 中从我自己的线程显示新舞台?

Ale*_*XPO 1 java multithreading javafx

我必须在另一个线程中运行一些任务,当该线程run()方法中满足某些条件时,我必须显示一个带有图片的弹出窗口,但是尝试这样做会导致一个异常,告诉我我不能在主 UI 线程之外创建任何阶段,现在有没有办法解决这个问题,我可以以某种方式从我的自定义线程访问 UI 线程并让它显示阶段吗?(注意:由于应用程序的性质,我必须使用自定义线程来检查条件,因为有 8 个不同的线程同时检查相同的条件。)

例外:

Exception in thread "Thread-4" java.lang.IllegalStateException: Not on FX application thread; currentThread = Thread-4
Run Code Online (Sandbox Code Playgroud)

Sch*_*uca 5

你应该用 Platform.runLater(...)

new Thread(() -> {
      Platform.runLater(() -> { 

          /* Your code goes here */

      });   
}).start();
Run Code Online (Sandbox Code Playgroud)

  • (显然,只有 UI 代码被包裹在 `Platform.runLater(...)` 中,而不是线程可运行的全部内容。) (4认同)