Notice
Recent Posts
Recent Comments
관리 메뉴

Developer Gonie

[5주차] 96. AWT, "이벤트 처리방법3" 이벤트 처리시 리스너 인터페이스가 아닌 Adapter클래스를 이용하는 방법(필요한 메소드만 구현하고 싶을 때) 본문

K-DigitalTraining 강의/1. Java

[5주차] 96. AWT, "이벤트 처리방법3" 이벤트 처리시 리스너 인터페이스가 아닌 Adapter클래스를 이용하는 방법(필요한 메소드만 구현하고 싶을 때)

이대곤 2022. 6. 9. 10:33

* 94번 게시글을 다시 보면  WindowEvent를 처리하기 위해 WindowListener 인터페이스를 implements시 총 7개의 미완성
  메소드를 완성시켜야 한다. 사용할지 안할지도 모르는 미완성 메소드를 모두 완성시켜야하는 것은 번거로운 일 일 수 있다.

  이 이유 때문에 Adapter 클래스를 제공하는데 이를 이용하면 사용할 메소드만 완성시키면 된다.
  사용하는 방식은 아래와 같다. 기존의 경우 리스너를 등록하고 이벤트 핸들러에서 메소드를 완성시켜주었다면,

  아답터 클래스를 사용하는 경우 리스너를 등록함과 동시에 아답터 객체를 생성하고 이 내부에서 이벤트를 핸들하는 메소드를
  완성시킨다. 완성시키는 메소드는 잠시 기존의 경우대로 implements 해서 미완성 메소드를 확인한 후 필요한 메소드만
  복사 붙여넣기 하여 가져와 사용하면 된다.

/*아답터 클래스를 사용하지 않는 기존의 경우*/
/*현 위치에 리스너를 추가하며, 이벤트 발생시 이 클래스 내부에서 이벤트 핸들러를 찾으라는 의미*/
this.addWindowListener(this)

/*아답터 클래스 사용시*/
/*현 위치에 리스너를 추가하며, 이벤트 발생시 아답터객체의 메소드가 이벤트를 핸들한다는 의미*/
this.addWindowListener(아답터객체 및 메소드 완성)

import java.awt.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;

class Sub7 extends Frame {
	
	Sub7(String title){
		super(title);
		setSize(300, 200);
		setVisible(true);
		
		this.addWindowListener(
				new WindowAdapter() {
					/*WindowAdapter클래스를 이용하WindowListener 인터페이스를 상속받아서 7개 미완성 메소드를 완성하는 것보다 효율적임*/
					public void windowClosing(WindowEvent e) {
						System.out.println("창이 닫힘");
						System.exit(0);
					}
					
					public void windowActivated(WindowEvent e) {
						System.out.println("창이 활성화됨");
					}
				}// new windowAdapter	
		);
	}

}

public class Ex12_07_WindowAdapter {
	public static void main(String[] args) {
		new Sub7("WindowEvent");
	}
}
Comments