N스크린하이브리드앱과정/JAVA

[6주][4일][3~4th] JAVA:AWT: 버튼의 동서남북, 1~5단계 이벤트 처리의 활용법

광천스러움 2013. 8. 22. 15:40

☆ 실습(1) : 동서남북 버튼의 위치 지정하기

 - 동서남북, center, 이렇게 버튼의 위치를 지정해줄 수 있다.

 - 생성자에서 프레임의 멤버변수를 지정, 거기에 프레임 객체를 생성하고 "프레임 실습"으로 초기화

   한다. 같은 방법으로 버튼을 만들어줄 수 있고, 버튼 괄호 안에 들어가는 "west" 등의 위치값은 상수

   로 이미 저장되어 있다.

 

결과

 

 

☆ 실습(2) : FlowLayout

 - 분명히 동서남북을 설정했는데, 똑같이 했는데! 23번 줄을 적어주니까 전혀 적용이 되지 않았다.

   왤까? 원래 아무것도 지정해주지 않으면 자동으로 BorderLayout으로 지정해 주는데, 이 안에 버튼

   을 붙이는 것이다. 따라서 BorderLayout에 붙여야 맞고, FlowLayout은 그냥 버튼을 나란히 표시해주

   는 역할만 한다는 것을 알 수 있다. 

 

결과

 

 

☆ 실습(3) : Panel 실습

 - Panel은 레이아웃에 붙일 수 있는 것으로, 이 Panel 안에 List와 버튼을 붙일 수 있다.

 - 패널도 생성하고 난 뒤에는 프레임에 붙여 주어야겠지~?

  - 위 그림을 보면 23번줄이 두개다. 중괄호 하나 빼줘야겠지?

 

결과

 

 

☆ 실습(4) : 윈도우 창닫기 실습

 - 윈도우 창을 닫을 수 있는 "WindowListener" 인터페이스

 - 인터페이스기 때문에 모든 기능을 오버라이딩 하여야만 한다.

 

결과

 

 

☆ 실습(5) : 이벤트 처리의 변천사

 - 윈도우 창닫기의 방식은 나날이 발전하여 1~5단계까지 나아갔다. 그 형태를 이제부터 설명하려고

   한다.

 

1단계

 - 일반적으로 클래스를 만들어 이벤트를 implements 하는 방식이다.

 - 보통은 메인 클래스 안에 생성자를 만들어 폼 구현을 해주는 경우가 많다.

 - 이벤트 처리는 인터페이스 이므로 모든 기능을 오버라이딩 해주어야만 한다. 따라서 필요없는 메서

   드가 많아 코딩이 길어질 뿐더러 효율적이지 않다.

 

결과

 

ActionListener 적용시

 

 

2단계

 - 1단계의 문제점을 해결해주기 위한 WindowAdapter 클래스!

 - 인터페이스가 아니기 때문에 필요한 기능만 오버라이딩해서 사용할 수 있다!

 - 하지만 여전히 클래스를 분리해서 만들어야 한다는 단점이 있다.

 

결과

 

 

3단계

 - 이너클래스 형태 : 메인 클래스 안에 들어가 있는 형태

 - 메인 메서드와 같은 등급에 있기 때문에, 메인 메서드에서는 윈도우 창을 닫는 이벤트와 메인 클래

   스에서 만든 프레임을 연결하기가 힘들다. 그래서 메인 클래스에서 iwa라는 멤버변수를 지정하고 

   생성자에서 폼과 이벤트를 연결하는 방법을 사용했다.

 

결과

 

 

4단계

 - 내부 익명 클래스 형태 : 메인 클래스 안에 있는 형태. 생성자 안이나 메인 메서드 안에도 들어갈       수 있음. 3단계보다 자유로운 움직임이 가능하다는 것이 특징.

 - 본래는 WindowAdapter 클래스를 상속받은 형태임.

 - 메인 클래스 ExStage4에서 멤버변수를 만들 필요없음.

 - 참조변수를 만들고 그 안에 바로 이벤트를 넣어버려 처리할 수 있어 간편함.

 - 그러나 인스턴스를 생성하는 과정에서 메모리 낭비가 일어나는 단점이 있음.

 

결과

 

 

5단계

 - 내부 익명 클래스의 임시객체 사용 : 한번 쓰고 버릴 수 있는 일회용 이벤트 처리.

 - 어디서든지 자유롭게 쓸 수 있는 것이 특징.

 - 이벤트 처리 구현의 완성형!

 

결과