我有一个JavaFX Group
与Path
节点添加到它,向其中添加我数据大约每秒30次。 这使我的整个GUI成为后约一分钟, 非常 laggy,反应迟钝。 首先,我的路径添加到Group
是这样的:
root.getChildren().add(path);
数据添加这样的:
while(true) {
// Calculate x and y...
path.getElements().add(new LineTo(x, y));
path.getElements().add(new MoveTo(x, y));
// Sleep 33 milliseconds...
}
如果我不路径添加到组,但仍事后添加数据,图形用户界面保持响应,所以性能问题似乎绘制路径的形状,当是。 为什么? 我能做些什么来提高性能? 这是已知发生的还是我做错了什么? 谢谢!
有一个已知的问题( 创建路径很慢 )在JavaFX的2.1与通路性能和另一个类似的问题的JavaFX 2.2未解决( 改善路径渲染性能 )。 可能还有其他的问题,如果你检查JavaFX的问题跟踪系统 。 对于JavaFX8,这是目前正在开发中,许多元素的性能得到了极大的改善 。
您可以尝试的一种替代的方法是使用一个画布 ,而不是一个路径。 在你的使用情况取决于不过,对于一些使用情况下,这将是一个合适的替代,对别人也不会。
如果你可以创建一个简短的重现测试用例并提交JavaFX的问题吧,JavaFX的团队会调查你看到任何性能问题和潜在的解决他们,如果他们是由底层系统的实现造成的。
您也应该检查实施以下的事情:
- 不要叫了JavaFX线程睡眠。
- 不要做任何处理器JavaFX的线程上密集。
- 不要执行JavaFX的线程阻塞I / O。
- 不要将节点数以万计的场景图或路径。
- 读取或从另一个线程的场景图写作对象时,使用Platform.runLater 。
- 不要叫Platform.runLater过于频繁或你最终将超载的事件处理系统。
不是说你的代码有任何上述问题,就需要检查的事项。