2015-04-22 65 views
-2

我试图用去除内wallsArrayList所有对象进行循环,但我不能让它工作ArrayList中删除不起作用

public void initializeButtons(){ 
    JButton save_button = new JButton("Save"); 
    save_button.addMouseListener(new Button_MouseListener(save_button)); 
    save_button.setBounds(1300, 50, 75, 50); 
    add(save_button); 

    JButton load_button = new JButton("Load"); 
    save_button.addMouseListener(new Button_MouseListener(load_button)); 
    load_button.setBounds(1300, 125, 75, 50); 
    add(load_button); 

    JButton reset_button = new JButton("Reset"); 
    save_button.addMouseListener(new Button_MouseListener(reset_button)); 
    reset_button.setBounds(1300, 200, 75, 50); 
    add(reset_button); 
} 

这是Button_MouseListener部分负责处理"Reset"按钮

if (button.getText().equals("Reset")) { 
    for (int i = 0; i < walls.size(); i++) { 
     walls.remove(((int)i)); 
    } 
    repaint(); 
} 

注意: walls.clear();也不起作用,我没有得到任何错误。它什么都不做。

回答

7

它看起来像复制粘贴错误。当你复制

JButton save_button = new JButton("Save"); 
save_button.addMouseListener(new Button_MouseListener(save_button)); 
save_button.setBounds(1300, 50, 75, 50); 
add(save_button); 

你只在其声明

JButton load_button = new JButton("Load"); 

改变引用的名称,但忘了改它的线下

save_button.addMouseListener(new Button_MouseListener(load_button)); 

这意味着你仍然仅向save_button添加收听者,而不是添加到load_button

同样的事情发生了reset_button这意味着代码

if (button.getText().equals("Reset")) { 
    for (int i = 0; i < walls.size(); i++) { 
     walls.remove(((int)i)); 
    } 
    repaint(); 
} 

绝不会通过这个按钮来执行。

顺便说一句,这个循环没有意义。如果您想清除List,请拨打clear()方法。

walls.clear(); 

你的循环将无法正常(您解决听众的问题甚至以后)工作的原因是walls.remove(i)删除i'th元素,使前者i+1的元素的新i“个元素(它转移所有元素在i之后),这意味着您将永远不会删除位置i处的新元素,因为在下一次迭代中i将会递增。