2012-01-26 2 views
3

나는 여기에 약간의 모서리에 자신을 코딩했다고 생각한다. 자바 스윙을 사용하여이 효과에 뭔가를하려고합니다.자바 스윙 - 클릭시 동작 수행

다음 버튼을 클릭 할 때 파일에서 줄 번호를 통해 새 줄을로드 한 다음 파일의 줄에있는 날짜가 아직 도착하지 않은 경우 다음 단추를 회색으로 표시합니다.

Scanner input = new Scanner(System.in); 
    System.out.println("Enter week number"); 
    int j = input.nextInt(); 
    String[] strArray = new String[4];   
    xmlLoader(j, strArray); 

    JButton nextButton = new JButton("Next"); 
    nextButton.setBounds(750, 250, 80, 30); 
    nextButton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent ae){ 
      j++; 
      doNext(j, nextButton); 
     } 
    }); 

이 최종의 경우, helpppp을가 최종 아니기 때문에 나는 J를 통과 할 수없고, 내가 버튼을 아무것도 변경할 수 없습니다 : 내 문제는 내가 다음과 같은 코드가있을 때이다!

특정 오류 : 로컬 변수 j는 내부 클래스에서 액세스됩니다. 최종 선언해야 함

+0

nextButton.setBounds (750, 250, 80, 30);'하지 마세요. 그것은 매우 연약합니다. 원하는 크기에 따라 레이아웃과 (필요한 경우) 크기를 사용하십시오. –

답변

7

외부 클래스의 필드로 j을 정의 할 수 있습니다.

class Sample{ 
    private int j; 

    void method() { 
    ... 
    nextButton.setBounds(750, 250, 80, 30); 
    nextButton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent ae){ 
      j++; 
      doNext(j, nextButton); 
     } 
     }); 
    } 
} 
+2

+1 초 몇 초 :-) – StanislavL

3

로컬 변수를 선언하는 대신 j 클래스 필드를 만듭니다.

2

j 변수를 다음과 같이 선언하십시오. final Integer j = new Integer (0). Integer 클래스가 래핑하는 값을 변경할 수 있습니다.