<Java> 15. 이벤트 처리

정지민·2023년 11월 16일

Java

목록 보기
10/12

이벤트

어떤 특정 행동이 발생한 그 자체

이벤트 처리 구조

각 이벤트 소스마다 이벤트 리스너와 연결

  • 이벤트 소스 객체 : 이벤트 발생
  • 이벤트 리스너 객체 : 이벤트 소스에서 발생한 이벤트 처리, 이벤트 핸들러 메서드 자동 호출
  • 이벤트 핸들러 메서드 : 전달된 이벤트 처리

이벤트 처리 과정

  1. 이벤트 소스에서 이벤트 발생
  2. 이벤트 객체 생성
  3. 이벤트 소스에서 연관된 리스너에 이벤트 객체 전달
  4. 이벤트 리스너의 이벤트 핸들러 메서드 실행

이벤트 객체

  • 발생한 이벤트에 관한 정보 가짐
  • 포함하는 정보 : 이벤트 소스와 이벤트 종류 등...

이벤트 리스너

  • 각 이벤트에 대한 이벤트 핸들러 메서드를 구현하기 위한 객체
  • 인터페이스 형태로 제공 - 각 핸들러에 대한 추상메서드 포함
  • 각 이벤트 소스는 add~Listener() 메서드 호출로 ~이벤트 발생시 처리할 이벤트 리스너 객체 지정

이벤트 처리 방법

  1. 이벤트 소스 결정
  2. 이벤트 리스너 구현
  3. 이벤트 소스와 이벤트 리스너 연결

add~Listener()의 인수인 리스너 생성 방법

  1. 현재 클래스 사용 - this 사용
  2. 일반 클래스 사용
  3. 내부 클래스 사용
  4. 익명 내부 클래스 사용 (많이 사용) - 하나의 리스너를 여러 이벤트 소스가 공유할때 적합
  5. 익명 내부 클래스 임시 객체 사용 (많이 사용) - 각 이벤트 소스마다 별도의 리스너 지정시 적합

외부 변수 조작

  • 리스너 객체를 내부 클래스로 구현한 경우 핸들러 내부에서 외부의 변수 액서스
  • 리스너에서 왜부 객체의 멤버는 자유롭게 참조 가능
  • 리스너가 등록 메서드의 지역 변수를 참조하려면 final 지정자가 필요함

리스너 등록 메서드가 add인 이유

  • 한 컴포넌트는 서로 다른 이벤트에 대한 리스너를 동시에 여러개 가질 수 있음
  • 한 컴포넌트는 한 이벤트에 대해 여러개의 리스너를 동시에 가질 수 있음

0개의 댓글