我有类似的问题 - > Issue with removing multiple rows at once from JavaFX TableView
我正在尝试使用索引删除TableView中的行。
当我执行此代码时,只删除0,2,4个索引。
b.setOnAction(new EventHandler(){
@Override
public void handle(ActionEvent arg0) {
data.remove(0);
data.remove(1);
data.remove(2);
data.remove(3);
data.remove(4);
}
});
怎么做?
答案 0 :(得分:0)
当您在列表开头删除一个条目时,这些项目将向后移动。向后移动项目也会更改其索引。这就是为什么当你调用data.remove(0)时,之前的data.get(1)将成为data.get(0)。你可以做的是:
@Override
public void handle(ActionEvent arg0) {
int numberOfItemsToRemove=4;
for(int i=0;i<numberOfItemsToRemove;i++){
data.remove(0);
}
}
修改您的评论:
另一种解决方案是从最高指数开始删除。假设您要删除索引为1,6和9的项目。然后您将执行以下操作:
@Override
public void handle(ActionEvent arg0) {
data.remove(9);
data.remove(6);
data.remove(1);
}
答案 1 :(得分:0)
删除数据(0)后,数据(1)变为数据(0),数据(2)变为数据(1)等。 我看到它刚刚回答,但我也会提到,
对于ObservableList,您有一个remove(from,to)方法,因此您可以执行data.remove(0,4);
。
对于常规列表,您可以删除集合,因此如果您要在集合中删除所有项目,则执行data.removeAll(list);
答案 2 :(得分:0)
试试这个......它有效..
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
data.remove(0);
data.remove(1);
data.remove(2);
table.setItems(data);
}
});