【发布时间】:2016-05-19 10:19:13
【问题描述】:
有了 TableView,假设有 10.000 行。选择了几乎所有这些,并想通过单击按钮删除。如何在没有 javafx GUI 延迟的情况下管理它?
现在我得到了:
ObservableList aLLinTable = tableView.getItems()
selected = tableView.getSelectionModel().getSelectedItems()
aLLinTable .removeAll(selected)
认为问题在于 TableView - ObservableList 集合中的项目类型。对其进行更改会导致触发动作。以及即时从集合中删除大量对象,因此存在搜索/删除循环。 也许我应该使用
ObservableList<Integer> selectedIndices = tableView.getSelectionModel().getSelectedIndices()
然后 按索引从 aLLinTable 集合中删除:
for(Integer idx : selectedIndices) {
aLLinTable.remove(idx.intValue())
}
尚未对其进行测试,但它仍然适用于 ObservableList 集合 aLLinTable。
所以也许将 aLLinTable 集合复制/转换到 ..ArrayList,在其上进行 for-loop,然后在 TableView 上重新创建 ObservableList 和 .setItems()?
【问题讨论】: