JavaFX 2.2 ScrollPane的内容太高了?

时间:2013-08-01 11:19:52

标签: performance charts drawing javafx-2

我使用javaFX 2.2来绘制甘特图
在SplitPane的左侧侧是可编辑的带有计划任务的TableView (名称,开始,结束),右侧侧是可信的包含图表的ScrollPane
我在表中添加了 Observable任务列表,并在循环中为列表中的每个任务创建矩形节点并将其添加到ScrollPane。图表中的表示任务的矩形必须是交互式的,并且可以监听事件,以便它们可以向左/向右移动,水平调整大小等等,并且此属性绑定到相应的任务对象,所以每当我移动Rectangle时,Task的开始/结束都会改变等,当我在表格中编辑单元格时,相应的Rectangle会发生变化。 TableView与ScrollPane一起垂直滚动...

如果我有多达100个任务,所有似乎都能正常运行,但是当我有更多任务时,拖动矩形(而非ScrollPane)非常慢并占用大量CPU,当超过300时, app崩溃...

我怎么能使用Threads以及处理事件的最佳解决方案? 延迟绑定,工作线程,还有什么?

或者我刚刚描述的这种方法是否很好?
我应该使用画布吗?
我是javaFX和GUI编程的新手 谢谢你的回答!

修改:
节点的数量不是问题,问题是scrollPane中的内容大小。 Rectangle表示的每个Task具有恒定高度24px,与tableView中的行相同。 因此,当我有很多任务时,scrollPane中内容的高度变得太大,我昨天发现它,所以我需要实现动态内容加载或其他...

1 个答案:

答案 0 :(得分:0)

正如我在https://stackoverflow.com/a/19577276/132374中提到的,您可以通过为节点设置'cache'为true来解决您的问题。这使得它们被缓存为图像,图形加速效果非常好。

'缓存'的详细信息: http://docs.oracle.com/javafx/2/api/javafx/scene/Node.html#cacheProperty