首页 文章

需要在JavaFX Application Thread中运行的方法列表?

提问于
浏览
0

我目前正在尝试开发JavaFX应用程序(游戏) . 为了保持应用程序顺利运行,我尝试将尽可能多的程序逻辑放到一个单独的线程中 . 但是,我经常遇到一些JAVAFX API调用需要在JFX Application线程中运行的问题 . 例如 . 创建一组矩形并对其进行着色可以在一个线程中完成 - 将它们添加到“Group”时,调用.doLayout()和.applycss()需要JFX Appl . 线 . 我还意识到“.play()”转换也需要在JFX Application线程中运行 .

问题是 - 如果你没有在正确的线程中执行它 - 在JFX中可能会随机出现“数组越界”异常,这不会指向根本原因 . 总是很难确定程序和图形逻辑是可以卸载到线程还是需要在JFX应用程序线程中运行 .

有人知道需要在JFX应用程序线程下运行的JavaFX方法调用列表吗?

谢谢大家!

1 回答

  • 2

    根据Application class documentation(这也在JavaFX文档的其他地方指定):

    必须在JavaFX应用程序线程上创建JavaFX Scene和Stage对象以及将场景图操作修改为活动对象(已经附加到场景的对象) .

    因此,您可以在后台线程上创建新节点(例如矩形),并且只要它们尚未附加到场景,您就可以在后台线程上修改它们的属性(例如“着色它们”) . 将节点附加到场景后,必须在FX应用程序线程上对节点进行任何修改 .

    如果窗格或组附加到场景,则调用 getChildren().add(...) 会修改该窗格/组,因此必须在FX应用程序线程上执行 . 您引用的其他示例( layout()applyCSS() )仅在相关节点无论如何附加到场景时才有意义 .

相关问题