import
java.awt.*;
public
class TestButton {
public static void main(String args[]) {
Frame f = new Frame("Test");
Button b = new Button("Press
Me");
b.addActionListener(new ButtonHandler());
f.add(b,BorderLayout.CENTER);
f.pack();
f.setVisible(true);
}
}
class ButtonHandler
implements ActionListener {
public void
actionPerformed(ActionEvent e)
{
System.out.println("Action occurred");
System.out.println("Button's label is :”
+ e.getActionCommand());
}
}
A : 아래 코드를 보자.
public class Button {
private final List<ActionListener> listeners = new ArrayList<ActionListener>();
public void addActionListener(ActionListener l) {
listeners.add(l);
}
public void click() {
ActionEvent event = new ActionEvent(this, 0, "click");
for (ActionListener l : listeners) {
l.actionPerformed(event);
}
}
}
main 함수 안에 없는 actionPerformed가 click() 메소드 안에있다. click은 Button class안에 있고 Button class는 import된 java.awt에 포함되어 있다. ButtonHandler라는 listner만 addActionListener를 통해 더해주면 실행은 awt가 알아서 하는 식.
'아래코드'에서 마우스 클릭후 생성되는 이벤트는 모든 Listener의 actionPerformed의 파라미터에 들어가서 실행한다. 그 과정에서 새로 등록된 Listener의 actionPerformed도 실행됨.
오늘의 결론 : Listener 만들어 놓기만 하면 Java.awt가 actionPerformed는 알아서 실행시켜줌.
댓글 없음:
댓글 쓰기