从TableView JavaFx中删除多行

时间:2013-11-24 23:33:45

标签: javafx tableview rows

我有类似的问题 - > 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);
            }

});

怎么做?

3 个答案:

答案 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);

        }
    });