2012-10-28 4 views
1

나는 모든 버튼을 가지고 있는데, 그들 모두를 위해 button.addActionListeners(this)을 사용하지 않고 액션 리스너를 추가하는 방법이 있습니까? 코드가 너무 지저분 해 보입니다.자바 : 그래픽 객체에 ActionListeners 추가

+0

이가 있습니다 for' 무엇 컬렉션과'루프 정확하게이다. –

+0

'코드가 너무 어수선해 보입니다. 정말 미안 해요. 클래스를 확장하거나 구현하지 마십시오. – mKorbel

답변

3

모든 버튼에 공통된 동작을 원할 경우 공통 코드를 정의한 추상 클래스를 확장해야합니다. 따라서 독자적인 추상 리스너 메소드가 추가 된 MyButtonClass 추상을 정의하십시오.

3

아니요, 없습니다. 그러나 모든 버튼이 동일한 액션 리스너 (매우 이상한 것)를 공유하는 경우 배열 또는 컬렉션에 저장해야합니다. 당신은 할 수있는 모든 버튼이 하나의 컨테이너에있는 경우

for (JButton button : allButtons) { 
    button.addActionListener(this); 
} 
+0

[예] (http://stackoverflow.com/a/7706684/230513). – trashgod

3

는이 같은 단일 ActionListener을 등록 할 수 있습니다 :

for (Component c: container.getComponents()) { 
    if (c instanceof JButton) { 
     ((JButton)c).addActionListener(this); 
    } 
}