如何从TableView中删除大量选定的行?

时间:2016-05-19 10:19:14

标签: java javafx tableview

获得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())
}

Didnt测试了它,但它仍然适用于ObservableList集合aLLinTable。

所以也许复制/转换aLLinTable集合到.. ArrayList,make for it for循环,然后在TableView上重新创建ObservableList和.setItems()?

1 个答案:

答案 0 :(得分:0)

答案是使用HashMap,使用正确的键从中删除对象,然后将map转换为ObservableList并将其设置为TableView.setItems()。

它工作得非常快。测试了5000-10000行。