본문 바로가기

언어공부/Java

자바 컴포넌트의 이벤트처리

자바 컴포넌트의 이벤트 처리에 대해서 알아보자.

자바 컴포넌트의 이벤트 처리

이벤트(event)는 응용 프로그램에 어떤 요구를 하는 사건을 말한다. 

 

이벤트 리스너(event listener)는 이벤트를 기다렸다가 이벤트가 발생하게 되면 이벤트 소스 객체로 적당한 처리를 하게 되는 객체를 말한다.

 

이벤트 소스(event source)는 버튼이나 스크롤바와 같이 이벤트가 발생한 컴포넌트 객체를 말한다.

 

어댑터 클래스는 리스너 인터페이스를 구현하여 리스너 인터페이스의 추상 메소드로 정의되어 있는 메소드를 모두 다 정의해 놓은 클래스이다. 이벤트 처리를 위한 리스너 클래스가 필요하다면 리스너 인터페이스 대신 어댑터 클래스의 상속을 받도록 해 필요한 메소드만 오버라이딩하면 된다.

 

1.  자바에서 이벤트란 컴퓨터에 일어나는 어떠한 사건을 말한다. 

 

2. 이러한 사건을 처리하기 위해서 자바에서는  java.awt.event 패키지에 이벤트만 처리하는 이벤트 리스너 인터페이스를 별도로 정의를 하고 있다. 그리고 각 리스너 인터페이스에 이벤트를 처리하는 추상메서드가 각각 정의되어 있다.

이 리스너 인터페이스를 상속 받은 자손클래스에서 이벤트를 처리하는 모든 추상메서드를 오버라이딩을 해야한다. 즉. 불필요한 추상메서드까지 오버라이딩을 해야 하기 때문에 자바에서는 추상메서드가 하나 이상인 리스너 인터페이스는 미리 추상메서드를 구현해 놓은 별도의 어댑터 추상클 래스를 따로 정의를 하고 있다.

즉 이벤트를 처리하기 위해서 리스너 인터페이스를 상속 . 받는 경우 추상메서드가 하나 이상이면 불필요한 추상메서드까지 오버라이딩을 해야하기 때문에 미리 구현해 놓은 어댑터 추상클래스를 익명클래스 문법으로 이벤트 처리하면 꼭 필요한 메서드만 오버라이딩을 해서 이벤트를 처리하기 때문에 매우 효과적으로 이벤트를 처리할 수 있다.

 

3. 이벤트 리스너 인터페이스에 정의된 이벤트 처리 추상메서드가 딱 하나만 존재하는 경우는 불필요한 추상메서드를 오버라이딩을 할 이유가 없기 때문에 별도의 어댑터 추 상클래스가 따로 구현되어져 있지 않다. 이런 경우는 리스너 인터페이스를 구현한 자손클래스에서 딱 하나 뿐인 추상메서드를 오버라이딩을 해서 이벤트를 처리하면 된다.

 

4.  이벤트 등록 메서드는 다음과 같이 정의된다. add+ (); 이벤트 리스너 인터페이스 이름 대표적으로 버튼 이벤트를 처리해주는 리스너 인터페이스 이름은 ActionListener 이다 . 그러므로 이벤트 등록 메서드는 다음과 같다. addActionListener();

 

ex)

 

ButtonListener2 클래스로 버튼을 누를때마다 배경색이 바뀐다. 

 

실행화면.

 

ex) 위와 같은 실행화면이 나온다. (ActionListener를 함께 구현했다.)

 

ActionListener를 구현했기 때문에 바로 클래스에 actionperfomed(ActionEvent e)메소드를 오버라이딩할 수 있다.

 

실행화면