2012-10-29 3 views
1

저는 Java로 계산기를 만들었지 만 코드의 일부는 반복적입니다. 여기에 내가 ActionListener를 추가하는 데 사용한 내용이 있습니다.Java swing GUI에서 여러 JButton에 ActionListener 클래스 추가?

one.addActionListener(handlerOne); 
    two.addActionListener(handlerOne); 
    three.addActionListener(handlerOne); 
    four.addActionListener(handlerOne); 
    five.addActionListener(handlerOne); 
    six.addActionListener(handlerOne); 
    seven.addActionListener(handlerOne); 
    eight.addActionListener(handlerOne); 
    nine.addActionListener(handlerOne); 
    zero.addActionListener(handlerOne); 

    add.addActionListener(handlerOne); 
    subtract.addActionListener(handlerOne); 
    multiply.addActionListener(handlerOne); 
    divide.addActionListener(handlerOne); 
    sqrt.addActionListener(handlerOne); 
    exp.addActionListener(handlerOne); 
    equals.addActionListener(handlerOne); 
    cls.addActionListener(handlerOne); 
    modulus.addActionListener(handlerOne); 

줄이기위한 방법이 있습니까?

+1

나는'ActionListener'를'Action'으로 대체 할 것입니다. 또한 [이 답변] (http://stackoverflow.com/a/12463553/1076463)을 참조하십시오. – Robin

답변

1

사용 (어쩌면 유일한 숫자 버튼) 전부 또는 일부에 대한 JButton[] 같은 일부 코드에 의해 리스너를 부착 할 수있다. 그런 다음 배열을 반복하고 버튼에 ActionListener을 추가

JButton[] buttons = new JButton[10]; // For digit buttons. 

int i = 0; 

for(JButton button: buttons) 
    buttons[i++].addActionListener(handlerOne); 

는 마찬가지로 당신이 조작 버튼의 JButton[]를 사용할 수 있습니다. 다른 배열을 사용하면 혼동을 피할 수 있다고 생각합니다.

0

버튼을 만들고 수신기를 할당하는 메소드를 만듭니다. 여전히 많은 호출로 끝나지 만 적어도 모든 버튼 생성과 초기화 코드는 동일한 메소드에 상주하므로 모든 버튼에 대해 쉽게 수정할 수 있습니다.

4

당신은 목록에있는 모든 구성 요소 (버튼) 놓여져하여 버튼의

for(Component c : componentsList) { 
    c.addActionListener(yourListener); 
} 
0

다른 대안이있을 수 있습니다 - 모든 버튼을 단일 컨테이너에 추가하고 해당 수신기에 리스너를 추가하십시오.