【问题标题】:How to show a new Stage from my own thread in JavaFX?如何在 JavaFX 中从我自己的线程中显示新阶段?
【发布时间】:2017-07-31 11:02:28
【问题描述】:

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

例外:

Exception in thread "Thread-4" java.lang.IllegalStateException: Not on FX application thread; currentThread = Thread-4

【问题讨论】:

    标签: java multithreading javafx


    【解决方案1】:

    您应该使用Platform.runLater(...) 包装您的操作

    new Thread(() -> {
          Platform.runLater(() -> { 
    
              /* Your code goes here */
    
          });   
    }).start();
    

    【讨论】:

    • (很明显,Platform.runLater(...)中只包裹了UI代码,而不是线程的runnable的全部内容。)
    猜你喜欢
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多