2013-11-24 91 views

回答

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); 
} 
+0

谢谢你的回应。当然,当我想删除索引1,2,3,4 ... 但是,当我想删除,例如,1,6,9 ...它不起作用。 – dakar

+0

嗨,请看我编辑的答案。 –

+0

现在完美了! :) – dakar

0

删除数据后(0),数据(1)变为数据(0),数据( 2)成为数据(1)等。 我看到它刚刚回答,但我还要提到,

对于ObservableList,您有一个删除(from,to)方法,因此您可以执行data.remove(0,4);

对于常规列表中,您可以删除一个集合,因此,如果你把所有的项目集合中删除,那么你做data.removeAll(list);

+0

谢谢你的回应。当我把所有项目删除在一个集合 - 它的工作方式与以前一样... – dakar

+0

@达喀尔,对不起,它是removeAll(列表) – brian

0

试试这个...它的工作..

btn.setOnAction(new EventHandler<ActionEvent>() { 

     @Override 
     public void handle(ActionEvent t) { 


       data.remove(0); 
       data.remove(1); 
       data.remove(2); 
       table.setItems(data); 

     } 
    }); 
+0

谢谢你的回应,但它不工作。 – dakar

+0

@达喀尔,但我检查它..它从表中删除索引号0,2,4行...你能找到别的吗? –