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 と宣言する必要があります`
答えは、私が考えたことのない本当にばかげたものであるか、小さな間違いを犯しているに違いないと確信しています。
どんな助けでもいただければ幸いです