1

我使用 javaFX 2.2 绘制甘特图
在SplitPane的左侧是带有计划任务(名称、开始、结束)的可编辑TableView ,右侧包含图表的可平移 ScrollPane。我将一个ObservableList添加到表中,并且在循环中,对于 List 中的每个任务,我创建 Rectangle Node 并将其添加到 ScrollPane。表示图表中任务的矩形必须是交互式的并监听事件,以便它们可以向左/向右移动、水平调整大小等,并且此属性绑定到相应的任务

对象,所以每当我移动 Rectangle 时,Task 的开始/结束都会发生变化等,当我在 table 中编辑单元格时,相应的 Rectangle 也会发生变化。TableView 与 ScrollPane 一起垂直滚动...

如果我有多达 100 个任务,一切似乎都运行良好且顺利,但是当我有更多任务时,拖动 Rectangles(不是 ScrollPane)非常慢并且占用大量 CPU,当超过 300 个时,应用程序崩溃。 ..

我如何使用线程以及处理事件的最佳解决方案是什么?惰性绑定,工作线程,还有别的吗?

还是我刚才描述的这种方法很好?
我应该使用Canvas吗?
我是 javaFX 和 GUI 编程的新手
谢谢你的回答!

编辑:节
点数不是问题,问题是滚动窗格中内容的大小。Rectangle 表示的每个 Task 的高度为 24px,与 tableView 中的 row 相同。所以当我有很多任务时,scrollPane中的内容高度太大,我昨天发现了,所以我需要实现动态内容加载什么的......

4

1 回答 1

0

正如我在https://stackoverflow.com/a/19577276/132374中提到的,您可以通过将节点的“缓存”设置为 true 来解决您的问题。这会导致它们被缓存为图形加速非常适合的图像。

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

于 2013-10-24T21:47:30.890 回答