2017-10-09 10 views
0

나는 사용자에게 간단한 수학 질문을하고, 답을 얻고, 사용자의 점수를 계산하는 퀴즈 프로그램을 만들고 있습니다 ...JButton actionlistener에 int 값을 전달하는 방법은 무엇입니까?

변수를 사용하기 때문에 오류가 발생합니다. 경우, 배)하는 ActionListener 내부 : 난 내 코드를 실행하면

for(x = 0;x < total;x++){ 
System.out.print((x+1)+". "); 

questionLabel.setText(number1" + "+ number2); 

answerButton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e){ 
      int returnedAns = Integer.parseInt(answerTextField.getText()); 

       if(returnedAns == answerToTheQuestion){ 
        score++; 
        System.out.println("correct"); 
        question[x].result = true; 
       }else{ 
        System.out.println("wrong"); 
        question[x].result = false; 
       } 

       try{ 
        Thread.sleep(500); 
       }catch(Exception e){} 
      } 
     }); 
    } 

것은, 그것은 INT의 X를 강조하고 '내부 제공자 라이선스 계약에서 언급 된 지역 변수는 최종 또는 효과적으로 최종해야합니다'라고.

도와주세요. 나는 무엇을 해야할지 정말로 모른다. 당신은 for -loop 및 내부에 또 다른 변수에 x의 값을 할당 할 수

+1

변수'final' : – notyou

+0

확인 ... 훨씬 더 보이지만 문제는 내가 그것을 변경해야 .... 그 루프 변수 –

답변

1

내가 일을하는 루프에 대한 위해를 변경할 수 있도록 필요에 따라 내가 마지막으로 표시 할 수 없습니다

... 그 변수를 final로 만드십시오.

for(x = 0;x < total;x++){ 
    final int index = x; 
    // use index inside your actionListener 
} 
3

가장 좋은 방법은이 ActionListener 구현을위한 추가 클래스를 정의하는 것입니다.

public class NumberedActionListener implements ActionListener { 

    private int number; 

    public NumberedActionListener(int number) { 
    this.number = number; 
    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 
    // ... 
    } 
} 

그러면 생성자에 int 값을 전달할 수 있습니다. 당신이 깨끗한 코드 같은 경우

answerButton.addActionListener(new NumberedActionListener(x)); 

이것은 또한