【问题标题】:How to remove huge number of selected rows from TableView?如何从 TableView 中删除大量选定的行?
【发布时间】: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()?

【问题讨论】:

    标签: java javafx tableview


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-27
      • 2017-10-13
      • 2017-03-04
      • 1970-01-01
      相关资源
      最近更新 更多