我使用 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中的内容高度太大,我昨天发现了,所以我需要实现动态内容加载什么的......