加快向 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);
我在 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);