Java 使用ZK删除所有选定的表行

Java 使用ZK删除所有选定的表行,java,zk,Java,Zk,我有一个ZK网格,其中我在每一行上生成随机数。每行由一个复选框和数字本身组成 我想有一个按钮,删除所有选中复选框的行。以下是“删除”按钮的事件处理程序: deleteButton.addEventListener(Events.ON_CLICK, new EventListener() { public void onEvent(Event evt) { Iterator<Component> selected

我有一个ZK网格,其中我在每一行上生成随机数。每行由一个复选框和数字本身组成

我想有一个按钮,删除所有选中复选框的行。以下是“删除”按钮的事件处理程序:

deleteButton.addEventListener(Events.ON_CLICK,
            new EventListener() {

        public void onEvent(Event evt) {
                Iterator<Component> selected = randomTable.queryAll("row checkbox").iterator();
                System.out.println("Deleted: ");
                while (selected.hasNext()) {
                    Checkbox c = (Checkbox) selected.next();
                    if (c.isChecked()) {
                        System.out.print(c.getId()); 
                        System.out.println(" from row " + c.getParent().getId());
                        c.getParent().detach(); // detach the checked row
                    }
                }
            }
        });   
deleteButton.addEventListener(Events.ON_单击,
新的EventListener(){
公共无效事件(事件evt){
所选迭代器=randomTable.queryAll(“行复选框”).Iterator();
System.out.println(“删除:”);
while(selected.hasNext()){
复选框c=(复选框)选中。下一步();
如果(c.isChecked()){
System.out.print(c.getId());
System.out.println(“从行”+c.getParent().getId());
c、 getParent().detach();//分离选中的行
}
}
}
});   
但是它只删除第一个选中的行,即使它找到了所有其他选中的行


我对ZK还是新手。有什么想法吗?

我想出了一个解决办法。事实证明,如果我使用中间列表来存储要删除的行,
detach()
对所有行都有效

无论如何,请随意分享任何关于它为什么不起作用的提示+1.任何捐款

以下是更新的代码:

deleteButton.addEventListener(Events.ON_CLICK,
            new EventListener() {
        public void onEvent(Event evt) {
            List<Component> toRemove = new Vector<Component>();
            Iterator<Component> selected = randomTable.queryAll("row checkbox").iterator();
            System.out.println("Deleted: ");
            while (selected.hasNext()) {
                Checkbox c = (Checkbox) selected.next();
                if (c.isChecked()) {
                    System.out.print(c.getId()); 
                    System.out.println(" from row " + c.getParent().getId());
                    toRemove.add(c.getParent());
                }
            }
            for (Component c : toRemove)
                c.detach();
        }

    });   
deleteButton.addEventListener(Events.ON_单击,
新的EventListener(){
公共无效事件(事件evt){
List toRemove=新向量();
所选迭代器=randomTable.queryAll(“行复选框”).Iterator();
System.out.println(“删除:”);
while(selected.hasNext()){
复选框c=(复选框)选中。下一步();
如果(c.isChecked()){
System.out.print(c.getId());
System.out.println(“从行”+c.getParent().getId());
toRemove.add(c.getParent());
}
}
对于(组件c:toRemove)
c、 分离();
}
});