【问题标题】:Speed up adding data to JavaFX TreeTableView加快向 JavaFX TreeTableView 添加数据的速度
【发布时间】:2021-09-22 13:23:49
【问题描述】:

我在 Java 中为 GUI 使用 JavaFX/OpenJFX,并且需要用数百万个项目填充 TreeTableView。但是,目前它需要很长时间才能完成。有没有办法加快速度?

这是我的代码:

List<TreeItem<FeatureTableItem>> rootChildren = treeTableView.getRoot().getChildren();
rootChildren.clear();
for (Feature feature : features) {
    TreeItem<FeatureTableItem> featureItem = new TreeItem<>(feature);
    rootChildren.add(featureItem);
}

【问题讨论】:

  • GUI 的使用表明数据是为人类设计的。然而,实际上,无法以表格形式处理数百万行。这意味着处理数据的方法本身就是错误的。

标签: java javafx openjfx treetableview


【解决方案1】:

构建一个单独的 List,而不是使用 rootChildren.clear() 和 rootChildren.add,而是使用 setAll

每次修改子列表时,TreeTableView 都必须更新自己的布局。通过使用setAll,您将导致 TreeTableView 执行一次,而不是数百万次。

List<TreeItem<FeatureTableItem>> rootChildren = new ArrayList<>();
for (Feature feature : features) {
    TreeItem<FeatureTableItem> featureItem = new TreeItem<>(feature);
    rootChildren.add(featureItem);
}

treeTableView.getRoot().getChildren().setAll(rootChildren);

【讨论】:

  • 感谢您的回答。我试过使用setAll(),但还是太慢了。实际上,在删除了一些功能后,我最终切换到了TableViewTableViewTreeTableView 快得多。
猜你喜欢
  • 2014-12-01
  • 2015-01-09
  • 2015-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-16
相关资源
最近更新 更多