javafx tableView getItems().删除(i)不起作用 - 原因



我有一个我想从tableview中删除所有行的情况。因此,我在按钮的setOnAction lambda表达式中执行了以下代码。但是这个代码对我不起作用。TableView的行都没有删除。

for (int i = data.size() - 1; i >= 0; i--) {
    tableView.getItems().remove(i);  
}

数据是一个fxcollections.observablearraylist,我的类和tableView是tableView的实例。

但是,我能够从同一tableview成功删除所选行。我使用ContextMenu的Menuitem的SetOnAction句柄功能的以下代码进行了操作。一定是我错过的简单的东西。

theSelectedObject = tableView.getSelectionModel().getSelectedItem();
if (theSelectedObject != null) {
    int row = data.indexOf(theSelectedObject);
    data.remove(row);
}

那么,为什么第一个方法不起作用?我想念什么?

是。这个问题得到了解决。这是因为代码创建了两个不同的列表,并且删除在错误的列表上运行。

当列表绑定到表视图时,我认为我可以简单地使用数据模型,而不是tableview,以便更改机制来处理更新。

非常感谢您的有用评论!

最新更新