gpt4 book ai didi

java - JavaFX 应用程序线程中需要运行的方法列表?

转载 作者:行者123 更新时间:2023-12-02 02:31:54 25 4
gpt4 key购买 nike

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

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

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

谢谢大家!

最佳答案

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

Creation of JavaFX Scene and Stage objects as well as modification of scene graph operations to live objects (those objects already attached to a scene) must be done on the JavaFX application thread.

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

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

关于java - JavaFX 应用程序线程中需要运行的方法列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46956203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com