0

にアクセスしたいと思っています。mouseClickedメソッドからアクセスします。誰でも私にこれを助けることができますか?Javaの内部クラスからの変数のアクセサー

for (int i = 0; i < 9; i++) { 
     JLabel jl = new JLabel(String.valueOf(i)); 
     jl.addMouseListener(new MouseAdapter() { 
      public void mouseClicked(MouseEvent evt) { 

         addAnEventToLabel(i); //Error 1 
      } 
     }); 
    } 

エラー1 - - 内部クラスから参照ローカル変数は、最終的または効果的に最終でなければなりません(IDEで表示) しかし、誰ランタイムまたはCompliletime例外ここで

は、私のコードの断片です。

+1

はいエラーメッセージがそれを言います。多分iの値をローカルの最終変数に代入してからそれにアクセスしてください。 –

+0

@Jackそう、私はローカルの最終変数を作成しました。今私はそれにアクセスすることができます。 – Nazeer

+0

@JackFlampこれにランタイム例外またはコンパイル時例外がない理由を説明できますか? – Nazeer

答えて

1

あなたが行うことができるはず:

for (int i = 0; i < 9; i++) { 
    final int tmpI = i; 
    JLabel jl = new JLabel(String.valueOf(i)); 
    jl.addMouseListener(new MouseAdapter() { 
     public void mouseClicked(MouseEvent evt) { 

        addAnEventToLabel(tmpI); 
     } 
    }); 
} 
+1

ニース、我々は同時に同じことを書いた。これは解決策でなければなりません:) –

+0

それは働いた。ありがとう兄貴。 Javaの内部クラスの詳細については、こちらをご覧ください。 – Nazeer

+0

@gpecheなぜこのマイコードには実行時例外またはコンパイル時例外がありませんか? – Nazeer

関連する問題