什么是“脏节点”''在JavaFX中?

时间:2018-05-06 02:36:24

标签: javafx

在我的计划中,我使用 Imageview 类,将其添加到列表,最后将列表添加到窗格,来自列表没有改变。当程序运行时,我需要通过调用 setLayoutX() setLayoutY()来更改已加载图像的位置,此过程将继续。结果是该程序存在一些问题。第一种是抛出异常,例如 ArrayIndexOutBoundsException NullPointerException 。此外,一些图像不会改变它们的位置。在检查异常时,我发现这应该与这些节点被归类为"脏节点"的事实有关。所以我想知道为什么他们被归类为这样。

1 个答案:

答案 0 :(得分:0)

我相信您已经忘记将UI代码放入JavaFX Application Thread中。建议您将UI代码放在Platform.runLater(() -> { /* your JavaFX code. */ }内,或使用Task来分隔JavaFX Application Thread中必须存在的内容。

如果这对您不起作用,则问题可能是开发人员在对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).