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