如何从自己的线程安全地修改JavaFX GUI节点?

用户名

我尝试在线程中更改JavaFX GUI节点,但是看到以下错误:

线程“ Thread-8”中的异常java.lang.IllegalStateException:在FX应用程序线程上不;currentThread =线程8

生成错误的示例代码:

public class Controller { 
  public Label label = new Label();

  public void load() {
    MyThread myThread = new MyThread();
    myThread.start();
  }

  public class MyThread extends Thread {
    public void run() {
      ......
      label.setText(""); // IllegalStateException: Not on FX application thread
    }
  }
}
宝石海

活动场景图中对JavaFX节点的所有操作都必须在JavaFX应用程序线程上运行,否则您的程序可能无法正常运行。

IllegalStateException: Not on FX application thread当您尝试从JavaFX应用程序线程修改场景图节点的属性时,JavaFX将引发异常即使没有收到IllegalStateException,也不应在JavaFX应用程序线程之外修改场景图节点,因为如果这样做,您的代码可能会意外失败。

Platform.runLater调用中包装用于处理场景图节点的代码,以允许JavaFX系统在JavaFX应用程序线程上运行代码。

例如,您可以使用以下代码修复示例程序:

Platform.runLater(new Runnable() {
  @Override public void run() {
    label.setText("");                       
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JAVAFX如何更新GUI元素(节点)

来自分类Dev

如何使用Java / HTML表单通过网页安全地创建neo4j节点

来自分类Dev

当所有节点日志条目都已提交时,如何安全地删除 raft 中的历史日志

来自分类Dev

从不同类中的不同线程修改JavaFX gui

来自分类Dev

如何使用GUI选择cytoscape中两个选定节点之间的所有边缘

来自分类Dev

如何安全地在主线程上使用[NSTask waitUntilExit]?

来自分类Dev

如何正确和线程安全地重用Jackson ObjectReader?

来自分类Dev

如何在Java中安全地访问数组线程?

来自分类Dev

如何在Java中线程安全地操作列表?

来自分类Dev

使线程安全地调用控件

来自分类Dev

使线程安全地调用控件

来自分类Dev

如何在主线程和后台线程之间安全地共享数组

来自分类Dev

如何修改XML节点?

来自分类Dev

从服务线程更新JavaFX GUI

来自分类Dev

如何将Facebook令牌安全地扔到自己的服务器上?

来自分类Dev

如何最好地以XML序列化JavaFX节点?

来自分类Dev

如何在Django中安全地更改数据库对象线程?

来自分类Dev

如何从多线程C ++ Linux应用程序安全地运行Shell脚本?

来自分类Dev

如何使用不同的线程通过openmp安全地更新C结构

来自分类Dev

如何在Java中使用线程时安全地递增

来自分类Dev

如何在Realm中正确和线程安全地删除对象

来自分类Dev

如何安全地关闭退出之前的所有线程

来自分类Dev

如何定义闭包类型以安全地发送到线程

来自分类Dev

如何使用TPL管道安全地从多个线程访问集合

来自分类Dev

如何在PhaseListener的beforePhase()和afterPhase()方法之间线程安全地共享属性?

来自分类Dev

如何从多线程C ++ Linux应用程序安全地运行Shell脚本?

来自分类Dev

如何安全地扩展Ubuntu分区?

来自分类Dev

如何安全地销毁QThread?

来自分类Dev

如何安全地发布StringBuffer?

Related 相关文章

  1. 1

    JAVAFX如何更新GUI元素(节点)

  2. 2

    如何使用Java / HTML表单通过网页安全地创建neo4j节点

  3. 3

    当所有节点日志条目都已提交时,如何安全地删除 raft 中的历史日志

  4. 4

    从不同类中的不同线程修改JavaFX gui

  5. 5

    如何使用GUI选择cytoscape中两个选定节点之间的所有边缘

  6. 6

    如何安全地在主线程上使用[NSTask waitUntilExit]?

  7. 7

    如何正确和线程安全地重用Jackson ObjectReader?

  8. 8

    如何在Java中安全地访问数组线程?

  9. 9

    如何在Java中线程安全地操作列表?

  10. 10

    使线程安全地调用控件

  11. 11

    使线程安全地调用控件

  12. 12

    如何在主线程和后台线程之间安全地共享数组

  13. 13

    如何修改XML节点?

  14. 14

    从服务线程更新JavaFX GUI

  15. 15

    如何将Facebook令牌安全地扔到自己的服务器上?

  16. 16

    如何最好地以XML序列化JavaFX节点?

  17. 17

    如何在Django中安全地更改数据库对象线程?

  18. 18

    如何从多线程C ++ Linux应用程序安全地运行Shell脚本?

  19. 19

    如何使用不同的线程通过openmp安全地更新C结构

  20. 20

    如何在Java中使用线程时安全地递增

  21. 21

    如何在Realm中正确和线程安全地删除对象

  22. 22

    如何安全地关闭退出之前的所有线程

  23. 23

    如何定义闭包类型以安全地发送到线程

  24. 24

    如何使用TPL管道安全地从多个线程访问集合

  25. 25

    如何在PhaseListener的beforePhase()和afterPhase()方法之间线程安全地共享属性?

  26. 26

    如何从多线程C ++ Linux应用程序安全地运行Shell脚本?

  27. 27

    如何安全地扩展Ubuntu分区?

  28. 28

    如何安全地销毁QThread?

  29. 29

    如何安全地发布StringBuffer?

热门标签

归档