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

그것은 일했습니다. Bro 형님 께 감사드립니다. Java의 내부 클래스에 대해 자세히 알고 싶습니다. – Nazeer

+0

왜이 코드에는 런타임 또는 컴파일 타임 예외가 없습니까? – Nazeer

관련 문제