我正在尝试使用for循环删除walls
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);
}
这是[{1}}负责处理Button_MouseListener
按钮
"Reset"
注意:
if (button.getText().equals("Reset")) {
for (int i = 0; i < walls.size(); i++) {
walls.remove(((int)i));
}
repaint();
}
也不起作用,我没有收到任何错误。它什么也没做。
答案 0 :(得分: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
'元素并使前i+1
元素成为新的i
'元素(它会移动i
左后的所有元素),这意味着您永远不会删除位置i
处的新元素,因为在下一次迭代中{{1将增加。