AWT 이벤트 처리하기
1 이벤트 처리 방식
AWT 이벤트 처리하기
1. 이벤트 처리 방식
2. 이벤트 클래스와 리스너2. 이벤 클래 와 리 너
3. 이벤트 어댑터
4. 이벤트의 종류
1
이벤트(Event)이벤트(Event)
이벤트▶사용자가 UI 컴포넌트에 대해 취하▶사용자가 UI 컴포넌트에 대해 취하
는 행위로 인한 사건
이벤트 기반 프로그래밍▶무한루프를 돌면서 사용자의 행위로▶무한루프를 돌면서 사용자의 행위로
인한 이벤트를 청취하여 응답하는 형태로 작동하는 프로그래밍태로 작동하는 프로그래밍
2
이벤트 처리이벤트 처리
j t tjava.awt.event▶AWT 컴포넌트에서 발생하는 다양한 이▶AWT 컴포넌트에서 발생하는 다양한 이
벤트를 처리하기 위한 인터페이스와 클래스 제공래스 제공
xxxListener, xxxEvent, xxxAdapter,
위임형 이벤트 처리 모델▶컴포넌트(이벤트 소스)에 특정 이벤트▶컴포넌트(이벤트 소스)에 특정 이벤트
를 처리하기 위한 객체(이벤트 리스너)를 따로 등록함
3
이벤트 클래스와 이벤트 리스너이벤트 클래스와 이벤트 리스너
▶컴포넌트에서 발생할 수 있는 이벤트▶컴포넌트에서 발생할 수 있는 이벤트들을 분류한 이벤트 클래스들이 존재
이벤트 클래스는 종류에 맞는 정보와 메소이벤트 클래스는 종류에 맞는 정보와 메소드를 가짐
▶컴포넌트마다 발생될 수 있는 이벤트▶컴포넌트마다 발생될 수 있는 이벤트가 정해짐
의 경우 발생 가능한 이벤트Button의 경우 발생 가능한 이벤트: ActionEvent, ComponentEvent, F E t K E t M E tFocusEvent, KeyEvent, MouseEvent
ActionEvent가 발생할 수 있는 컴포넌트: Button, List, MenuItem, TextField
4
이벤트 클래스와 이벤트 리스너이벤트 클래스와 이벤트 리스너
▶리스너는 이벤트 처리를 위한 인터페이스
xxxEvent 클래스는 xxxListener 인터페이스xxxEvent 클래스는 xxxListener 인터페이스와 대응됨
▶ Li t 에는 저수준 이벤트를 처리하▶xxxListener에는 저수준 이벤트를 처리하기 위한 메소드들이 존재
예 - KeyEvent 처리를 위한 KeyListener
: void keyPressed(KeyEvent e)void keyPressed(KeyEvent e)
: void keyReleased(KeyEvent e)
: oid ke T ped(Ke E ent e): void keyTyped(KeyEvent e) 5
이벤트 처리 과정이벤트 처리 과정
▶처리할 이벤트를 결정▶처리할 이벤트를 결정ActionEvent라 하자
▶ 현▶해당 리스너를 구현하는 클래스를 정의ActionListener를 구현하는 클래스를MyListener라 하자
: void actionPerformed(ActionEvent e)라는 메소드를 구현해야 함
▶객체를 생성하여 해당 컴포넌트의 이벤▶객체를 생성하여 해당 컴 넌 의 이벤트 리스너로 등록함
this addActionListener(new MyListener());this.addActionListener(new MyListener());
6
7
8
이벤트 클래스 계층 구조이벤트 클래스 계층 구조
OOObjectObject
ComponentEventComponentEvent ContainerEventContainerEventEventObjectEventObject ActionEvent
AdjustmentEvent
FocusEventFocusEvent
AWTEventAWTEvent AdjustmentEvent
ItemEvent
InputEventInputEvent
KeyEventKeyEvent
TextEvent MouseEventMouseEvent
PaintEventPaintEvent
WindowEventWindowEvent
9
이벤트 어댑터이벤트 어댑터
▶특정 이벤트에 대한 편리한 처리▶특정 이벤트에 대한 편리한 처리이벤트 처리 메소드가 2개 이상인 리스너 인터페이스(xxxListener)들에 대해너 인터페이스(xxxListener)들에 대해그것을 구현한 어탭터 클래스(xxxAdapter)가 존재함(xxxAdapter)가 존재함
각 이벤트 처리 메소드는 빈 블록임
▶어댑터가 있는 경우 리스너를 현▶어댑터가 있는 경우, 리스너를 구현하는 대신 어댑터를 상속하는 클래스를 정의
10
11
ActionEvent와 ActionListenerActionEvent와 ActionListener
▶ActionListener의 메소드void actionPerformed(ActionEvent ev)void actionPerformed(ActionEvent ev)
버튼을 클릭하는 경우, 메뉴 항목을 클릭하는경우 TextField에서 ‘엔터키’를 치는 경우경우, TextField에서 엔터키 를 치는 경우, 리스트의 항목을 더블 클릭하는 경우
▶ActionEvent의 메소드▶ActionEvent의 메소드String getActionCommand()
: 명령의 이름을 리턴
Object getSource()
: EventObject에서 상속된 메소드12
13
14
15
16
WindowEvent와 WindowListenerWindowEvent와 WindowListener
▶WindowListener의 메소드윈도우의 상태 변화를 야기하는 경우윈 우의 상태 변화를 야기하는 경우
void windowActivated(WindowEvent ev)
void windowClosed(WindowEvent ev)void windowClosed(WindowEvent ev)
……
▶Wi d E t의 메소드▶WindowEvent의 메소드int getNewState()
: 0이면 보통 상태임
int getOldState()
Window getWindow() 17
18
ItemEvent와 ItemListenerItemEvent와 ItemListener
▶ItemListener의 메소드
S C ( )void itemStateChanged(ItemEvent ev)
Checkbox, CheckboxMenuItem, Choice, List에서 아이템을 선택하거나 해제하는 경우
▶ItemEvent의 메소드
Object getItem()Object getItem()
int getStateChange()
19
20
21
22
23
AdjustmentEvent와 리스너AdjustmentEvent와 리스너
▶Adj t tLi t 의 메소드▶AdjustmentListener의 메소드
void adjustmentValueChanged (AdjustmentEvent ev)
스크롤바의 상태 변화가 생길 때상 생
▶AdjustmentEvent의 메소드
i t g tV l ()int getValue()
int getAdjustmentType()
: UNIT_INCREMENT, UNIT_DECREMENT, BLOCK_INCREMENT, BLOCK_DECREMENT, TRACK
24
25
KeyEvent와 KeyListenerKeyEvent와 KeyListener
▶K Li t 의 메소드▶KeyListener의 메소드keyPressed(KeyEvent ev)
keyReleased(KeyEvent ev)
keyTyped(KeyEvent ev)y yp y
▶KeyEvent의 메소드char getKeyChar()char getKeyChar()
int getKeyCode()
int getKeyLocation()int getKeyLocation()
static String getKeyText(int keyCode)
( )static String getKeyModifiersText(int) 26
27
MouseEvent와 리스너MouseEvent와 리스너
▶▶MouseListener의 메소드mouseClicked(MouseEvent ev)
……▶MouseMotionListener의 메소드▶MouseMotionListener의 메소드mouseDragged(MouseEvent ev)
mouseMoved(MouseEvent ev)mouseMoved(MouseEvent ev)
▶MouseEvent의 메소드int getButton()
int getCickCount()
Point getPoint()28
29
30
31
TextEventTextEvent
▶TextListener의 메소드
C ( )textValueChanged(TextEvent ev)
TextArea와 TextFiled에서 텍스트에변화가 생겼을 때
▶FocusListener의 메소드▶FocusListener의 메소드
컴포넌트가 입력 포거스를 얻거나 잃을 때을 때
focusGained(FocusEvent ev)
focusLost(FocusEvent ev)32
33