JavaFX TableView getItems()。remove(i)不起作用 - 为什么

时间:2017-09-29 19:41:31

标签: tableview javafx-8

我有一种情况,我想删除TableView中的所有行。所以我在按钮的setOnAction lambda表达式中做了以下代码。但是这段代码对我不起作用。没有删除tableView的行。

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

其中data是带有我的类的FXCollections.observableArrayList,tableView是TableView的一个实例。

但是,我能够从同一个tableView中成功删除所选行。我是使用ContextMenu的MenuItem的setOnAction句柄函数中的以下代码完成的。一定是我错过的简单。

{
  "records":[
   {
     "id": 0,
     "flair": "LowerFlair",
     "flairtext": "Give it up!",
     "min": 0,
     "max": 0.200
   },
   {
     "id": 1,
     "flair": "LowerMiddleFlair",
     "flairtext": "You might need more batting practice",
     "min": 0.201,
     "max": 0.249
   }
  ]
 }

那么,为什么第一种方法不起作用?我错过了什么?

1 个答案:

答案 0 :(得分:0)

是。这个问题已经解决了。这是因为代码创建了两个不同的列表,并且删除操作在错误的列表上。

当列表绑定到表视图时,我认为我可以简单地处理数据模型而不是TableView,因此更改机制将处理更新。

非常感谢有用的评论!