javafx - JavaFX 中的“脏节点”是什么?
问题描述
在我的程序中,我使用了Imageview类,将其添加到列表中,最后将列表添加到Pane中,从中列表不会更改。当程序运行时,我需要通过调用setLayoutX()和setLayoutY()来改变加载图像的位置,这个过程继续进行。结果是程序出现了一些问题。首先是抛出ArrayIndexOutBoundsException和NullPointerException等异常. 此外,一些图像不会改变它们的位置。在检查异常时,我发现这应该与这些节点被归类为“脏节点”的事实有关。所以我想知道为什么他们被这样分类。
解决方案
我相信您忘记了将您的 UI 代码放入 JavaFX 应用程序线程中。我建议您将 UI 代码放入Platform.runLater(() -> { /* your JavaFX code. */ }
其中或使用任务来分隔 JavaFX 应用程序线程中必须存在或不存在的内容。
如果这对您不起作用,则问题可能是开发人员在对 impl_updatePeer 方法和 Region 类的评论中报告的 JavaFX 错误:
// TODO I think we have a bug, where if you create a Region with an Image that hasn't
// been loaded, we have no listeners on that image so as to cause a pulse & repaint
// to happen once the image is loaded. We just assume the image has been loaded
// (since when the image is created using new Image(url) or CSS it happens eagerly).
推荐阅读
- python - 当我按下它时,停止按钮改变它的浮雕。(Tkinter)
- python - SELECT 命令拒绝用户(即使我拥有所有权限)
- python - 使用 Python 到 Exe 的新 Bee 问题
- python - * 在这段 python 代码中做了什么来获得清晰的输出?
- html - 阅读更多纯 CSS
- javascript - 谷歌地图自动完成限制不起作用
- docker - 替换 docker 文件中的 args 不起作用
- git - 我们可以跳过关于“将您的 SSH 密钥添加到 ssh-agent”的部分,而只生成密钥并添加到 GitHub 吗?
- javascript - 带有 Google Firebase 身份验证和功能的 REST API 使用 Bearer Token
- swift - 在 Swift 协议中使用泛型方法