10.3 스윙 컴포넌트의 이벤트
-스윙 컴포넌트가 발생하는 이벤트는
모든 컴포넌트가 공통적으로 지원하는 저수준 이벤트와
일부 컴포넌트만 지원하는 의미적 이벤트로 나눌 수 있다.
-모든 컴포넌트에서 발생된다.
ex) 마우스나 키보드로부터 발생되는 이벤트

-일부 컴포넌트에서만 발생한다.
ex) 액션 이벤트

*웬만하면 의미적 이벤트를 처리하는 것이 좋다.
-버튼이 발생하는 이벤트를 처리할 때 ActionListener 인터페이스를 구현하는데,
이때 호출되는 메소드가 actionPerformed()라는 추상 메소드이다.
// 소스를 입력하고 Ctrl+Shift+O를 눌러서 필요한 파일을 포함한다.
public class ChangeBackground extends JFrame {
private JButton button1;
private JButton button2;
private JPanel panel;
MyListener listener = new MyListener(); // 리스너 객체를 미리 생성시켜 놓는다.
public ChangeBackground() {
this.setSize(300, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("이벤트 예제");
panel = new JPanel();
button1 = new JButton("노란색");
button1.addActionListener(listener); // 두 개의 버튼에 동일한 이벤트 리스너 객체를 등록한다.
panel.add(button1);
button2 = new JButton("핑크색");
button2.addActionListener(listener);
panel.add(button2);
this.add(panel);
this.setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private class MyListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button1) { // getSource()를 이용하여 이벤트 소스를 찾는다.
panel.setBackground(Color.YELLOW);
} else if (e.getSource() == button2) {
panel.setBackground(Color.PINK);
}
}
}
public static void main(String[] args) {
ChangeBackground t = new ChangeBackground();
}
}

1. ActionEvent
2. ActionListener 인터페이스
actionPerformed(ActionEvent e) 메소드를 오버라이딩해야 함.
3. ActionEvent 객체의 getSource() 메소드를 사용함.
=> 이 메소드는 이벤트를 발생시킨 컴포넌트(버튼)을 반환함.