如何修复从内部类引用的局部变量必须是最终错误或实际上是最终错误



你能解释一下"从内部类引用的局部变量必须是final或实际上是final"错误意味着什么吗?以及为什么我在将涉及的变量声明为final之后也会得到它。

这是我的代码:

public class FenetreJeu extends JFrame {
final Echiquier e = new Echiquier();
FenetreJeu fj;
final public JLabel[][] labels = new JLabel[8][8];
Color couleur = new Color(51, 102, 0);
final Border border = BorderFactory.createLineBorder(Color.RED, 3);
public void moves() {
for (int i = 0; i <= 7; i++) {
for (int j = 0; j <= 7; j++) {
labels[i][j].addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent ee) {
labels[i][j].setBorder(border);
}
});
}
}
}
}

我收到这条线路的错误

labels[i][j].setBorder(border);

我想做的是在mouseEvent(单击、按下或拖动(时更改标签的颜色边界,并且我需要在mouseClicked方法中使用i,j变量。

在我得到所有反馈后,我终于找到了一个适合我的解决方案,关键是用另外两个最终变量替换I,j变量,就像我可以在mouseClicked方法中使用它们一样

public void moves(){
for (int i = 0; i<=7;i++){
for ( int j=0 ; j <= 7 ; j++){
final int k = i;
final int l = j;
labels[i][j].addMouseListener(new MouseAdapter() {
@Override 
public void mouseEntered(MouseEvent ee) {
labels[k][l].setBorder(border);
System.out.println("the case holding the "+e.cases[k][l].getPiece().getType());
}       });
}
}
}

相关内容

最新更新