- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在尝试开发 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/
我是一名优秀的程序员,十分优秀!