
- 마우스 이벤트 -> 좌 클릭, 우 클릭 무엇을, 몇번 눌렀는지 파악 가능
이벤트 기반 프로그래밍
이벤트 기반 프로그래밍 (Event Driven Programming)
- 이벤트 종류
- 사용자의 입력 : 마우스 드래그, 마우스 클릭, 키보드 누름 등
- 센서로부터의 입력, 네트워크로부터 데이터 송수신
- 다른 응용프로그램이나 다른 스레드로부터의 메시지
- 이벤트의 발생에 의해 프로그램 흐름이 결정되는 방식
- 이벤트가 발생하면 이벤트를 처리하는 루틴(이벤트 리스너) 실행
- 프로그램 내의 어떤 코드가 언제 실행될 지 이벤트 발생에 의해 전적으로 결정
- 반대되는 개념 : 배치 실행(batch programming)
- 프로그램의 개발자가 프로그램의 흐름을 결정하는 방식
이벤트 기반 프로그램의 구조
- 이벤트 리스너 들의 집함
(인터페이스로 구성되어있음, 인터페이스는 무조건 구현 해야함)
이벤트 처리 순서
- 이벤트 발생 (예: 마우스나 키보드의 움직임 혹은 입력)
- 이벤트 객체 생성
- 현재 발생한 이벤트에 대한 정보를 가진 객체
- 이벤트 리스너(이벤트를 처리하도록 만들어진 코드) 찾기
- 이벤트 리스너 호출
- 이벤트 객체가 리스너에 전달됨
- 이벤트 리스너 실행
이벤트의 실제 예

- Container Event, Mouse Event 가 발생하는 이유 : 컨테이너에 변화가 있기 때문
자바의 이벤트 기반 GUI 응용프로그램 구성

이벤트 관련 용어
이벤트 소스
이벤트 객체
- 발생한 이벤트에 대한 정보
- 예) 이벤트 종류, 이벤트 소스, 화면 좌표, 마우스 버튼 종류, 눌러진 키
이벤트 리스너 (인터페이스, 인터페이스는 반드시 구현)
- 이벤트를 처리하는 코드
- 컴포넌트에 등록되어야 작동 가능
이벤트 분배 스레드
- 동작
- 자바 가상 기계로부터 이벤트의 발생을 통지 받음
- 이벤트 소스와 이벤트 종류 결정
- 적절한 이벤트 객체 생성, 이벤트 리스너를 찾아 호출
- 무한 루프를 실행하는 스레드
이벤트 객체
이벤트 객체란?
- 이벤트가 발생할 때, 발생한 이벤트에 관한 정보를 가진 객체
- 이벤트 리스너에 전달됨
- 이벤트 리스너 코드에서 이벤트가 발생한 상황을 파악할 수 있게 함 (확인 가능)
이벤트 객체의 종류
(참고)

이벤트 객체가 포함하는 정보
- 이벤트의 종류, 소스. 발생한 화면 좌표, 컴포넌트 내 좌표
- 버튼이나 메뉴 아이템에 이벤트가 발생한 경우 버튼이나 메뉴 아이템의 문자열
- 클릭된 마우스 버튼 번호
- 마우스의 클릭 횟수
- 키가 눌러졌다면 키의 코드 값과 문자 값
- 체크박스, 라디오버튼 등과 같은 컴포넌트에 이벤트가 발생하였다면 체크 상태
이벤트에 따라 조금씩 다른 정보 포함
- Action 객체 : 액션 문자열
- MouseEvent 객체 : 마우스의 위치 정보, 마우스 버튼, 함께 눌러진 키 정보 등
- ItemEvent 객체 : 아이템의 체크 상태
이벤트 소스 알아 내기
- Object EventObject.getSource()
- 발생한 이벤트의 소스 컴포넌트 리턴
- Object 타입으로 리턴하므로 캐스팅하여 사용
- 모든 이벤트 객체에 대해 적용
이벤트 객체의 메소드
![업로드중..]()
이벤트 리스너(Event Listener)
이벤트 리스너란?
JDK에 이벤트 리스너 작성을 위한 인터페이스(interface) 제공
- 개발자가 리스너 인터페이스의 추상 메소드 구현
- 이벤트가 발생하면 자바 플랫폼은 리스너 인터페이스의 추상 메소드 호출
- 예) ActionListener 인터페이스
inerface ActionListener{ //아래 메소드를 개발자가 구현해야함
public void actionPerformed(ActionEvent e); // Action 이벤트 발생시 호출됨
}
inerface MouseListener{ // 아래의 5개 메소드를 개발자가 반드시 구현해야 함.
public void mousePressed(MouseEvent e); // 마우스 버튼이 눌러지는 순간 호출
public void mouseReleased(MouseEvent e); // 눌러진 마우스 버튼이 떼어지는 순간 호출
public void mouseClicked(MouseEvent e); // 마우스가 클릭되는 순간 호출
public void mouseEntered(MouseEvent e); // 마우스가 컴포넌트 위에 올라가는 순간 호출
public void mouseExited(MouseEvent e); // 마우스가 컴포넌트 위에서 내려오는 순간 호출
}