加快向 JavaFX TreeTableView 添加数据的速度

Speed up adding data to JavaFX TreeTableView

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

这是我的代码:

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

构建一个单独的列表,而不是使用 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);