我正在尝试创建一个 JLabels 数组,单击时它们都应该不可见。当试图通过需要访问用于声明标签的循环的迭代变量的内部类来设置鼠标侦听器时,就会出现问题。代码不言自明:
for(int i=1; i<label.length; i++) {
label[i] = new JLabel("label " + i);
label[i].addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent me) {
label[i].setVisible(false); // compilation error here
}
});
cpane.add(label[i]);
}
我认为我可以通过使用this
或super
代替label[i]
内部方法中的调用来克服这个问题,但我无法弄清楚。
编译错误是:局部变量 i 是从内部类中访问的;需要声明为final`
我敢肯定,答案一定是我没有想到的非常愚蠢的事情,或者我犯了一些小错误。
任何帮助,将不胜感激