Event Handling
- 사용자의 동작이 있을 때, 그에 대한 대비코드를 준비해두고 실행 하는 것.
- event는 java.awt.event 와 javax.swing.event 패키지에서 제공하는 클래스를 사용.
- swing에서 java의 event를 사용할 수 있다.
- 작성법 )
- 발생하는 이벤트를 처리할 수 있는 XxxListener를 구현


- 컴포넌트에서 이벤트에 등록하는 method를 호출
컴포넌트명.addXxxListener(이벤트가 발생했을 때 처리할 객체)
- XxxListener에 존재하는 abstract method를 Override한다.
- Override한 method에서 이벤트가 발생했을 때 사용자에게 제공할 코드를 기술.
( 이벤트가 발생했을 때 처리할 코드를 기술 )
컴포넌트명.addXxxListener(이벤트가 발생했을 때 처리할 객체)

흐름
jbtn.addActionListener( this );
- 사용자가 버튼을 클릭하면
- JVM이 이벤트객체에 등록된 컴포넌트인지를 판단.
- 등록된 버튼이 아니라면 무시, 등록된 버튼이라면 event객체를 생성.
Override된 method를 호출하면서 생성된 이벤트 객체를 arguments로 할당해준다.
버튼이면 ActionEvent객체가 생성되고 => Override한 actionPerformed()를 호출하여 매개변수에 ActionEvent객체를 입력해준다.

이벤트코딩 순서
- 이벤트를 처리할 수 있는 XxxListener를 구현
public class Test extends JFrame implements ActionListener{
}
- 이벤트 처리와 관련있는 컴포넌트를 인스턴스 변수로 선언.
private JButton jbtn;
- 생성자에서 컴포넌트를 생성
public Test(){
jbtn = new Jbutton();
- 이벤트에 등록
jbtn.addActionListener( this );
- 배치작업
- 가시화
- 종료이벤트처리
@Override
public void actionPerformed( ActionEvent ae ){
}
- 이벤트가 발생했을 때 사용자에게 제공할 코드……
}
윈도우 종료
- WindowListener 인터페이스를 구현하여 windowClosing()안에서 종료 처리 코드 (
Frame에서 제공하는 dispose()) 호출 한다.

XxxAdapter 클래스
- 이벤트를 처리하기 위해 구현된 XxxListener가 abstract method를 하나이상 가지고 있을 때
구현 클래스에서 편하게 사용하도록 XxxListener를 미리 구현해둔 클래스들.
- abstract class : 직접 객체화 되지 않고, 자식 클래스에 의해서 객체화된다.
- 자식클래스에서는 필요한 method만 Override하여 사용한다.
- 상속,
interface와 is a

- 구현 클래스에서 모든 추상 메서드를 Override해야한다.
interface와 is a 디자인과 has a

- 구현 클래스에서 모든 추상 메서드를 Override해야한다.
adapter와 is a 디자인과 has a