Download presentation
Presentation is loading. Please wait.
1
이벤트 프로그래밍 안혜선
2
목차 AWT 이벤트란? 자바의 이벤트 모델 이벤트 관련 컴포넌트 Event 종류
3
이벤트란? 컴퓨터 사용자 상호작용 프로그램을 사용자가 직접 조작할 수 있는 응용 프로그램 요구
컴퓨터 사용자 상호작용 프로그램을 사용자가 직접 조작할 수 있는 응용 프로그램 요구 이벤트-드리븐(event-driven) 프로그램 이벤트가 발생하기를 기다리는 무한 루프(infinite loop) 프로그램
4
자바의 이벤트 모델 위임형 모델(delegation event model)
GUI의 컴포넌트에서 이벤트가 발생되면 해당되는 리스너(listener)에게 이벤트 처리를 넘겨주는 방식 이벤트 처리를 위한 컴포넌트에는 해당 리스너가 등록되어 있어야 하며, 리스너에는 이벤트를 처리할 처리루틴이 포함되어 있어야 한다 GUI 컴포넌트 이벤트 발생 발생된 이벤트에 따라 해당 리스너에 이벤트 전달 리스너 리스너 리스너 컴포넌트에 등록된 리스너들
5
이벤트 관련 컴포넌트 이벤트를 발생시키는 컴포넌트들의 클래스 계층 구조 이벤트는 대부분 GUI 관련 컴포넌트에서 발생
java.awt 패키지로 제공 Button Checkbox Canvas Choice Panel Container ScrollPan Dialog FileDialog Component Label Window List Frame Scrollbar TextArea Object TextComponent TextField MenuBar MenuComponent CheckboxMenuItem MenuItem Menu PopupMenu
6
이벤트 종류- 기본적인 클래스 Event 관련 클래스 ActionEvent AdjustmentEvent
ContainerEvent FocusEvent KeyEvent InputEvent Object MouseEvent EventObject AWTEvent ComponentEvent PaintEvent WindowEvent ItemEvent TextEvent
7
이벤트 종류 ActionEvent 버튼이 눌려지거나, 리스트의 한 항목이 더블 클릭되어 선택되거나,
메뉴의 한 항목이 선택되었을 때 발생 AdjustmentEvent 사용자가 스크롤바를 움직였을 때 발생 ComponentEvent 컴포넌트가 감춰지거나, 감춰진 상태에서 다시 나타날 때, 컴포넌트를 이동하였을 때, 크기를 조정하였을 때 발생 ContainerEvent 컨테이너에 컴포넌트가 추가되거나 제거 되었을 때 발생 FocusEvent 컴포넌트가 키보드 입력을 받아들일 수 있는 초점(focus)을 획득하거나, 초점을 잃었을 때 발생 ItemEvent 체크박스나 리스트의 한 항목이 선택되었을 때, 메뉴의 한 항목이 선택되거나, 선택된 항목이 해제되었을 때 발생 KeyEvent 키보드로부터 입력이 일어났을 때 발생 MouseEvent 마우스의 버튼이 눌려지고 띠어질 때, 움직일 때, 드래그(drag) 할 때, 마우스의 초점이 컴포넌트 영역에 들어가거나 나올 때 발생 TextEvent text area나 text field에서 값이 입력될 때 발생 WindowEvent 윈도우가 활성화(activate)되거나 비활성화 될 때, 아이콘화 될 때, 아이콘으로부터 윈도우로 복구될 때, 윈도우가 open, close, quit 될 때 발생
8
이벤트 종류 - (1) EventObject EventObject 클래스 생성자 EventObject(Object src)
메소드 Object getSource() 이벤트를 발생시킨 객체를 리턴 String toString() 이벤트 이름을 문자열로 리턴
9
이벤트 종류 - (1) AWTEvent AWTEvent 클래스 AWTEvent( Object source, int id)
: 이벤트가 발생한 곳( source)와 이벤트 타입(id)를 이용해서 생성 메소드 int getID() : 이벤트 타입을 리턴 String paramString() : 이벤트의 상태를 문자열로 리턴
10
이벤트 종류 - (2) ActionEvent 버튼 클릭, 텍스트 필드에서 엔터를 칠 때 리스트에서 더블 클릭할 때, 메뉴의 아이템이 선택되었을 때 발생 이벤트가 발생하였을 때 같이 사용된 수정자 키를 구분하기 위해 4개의 상수를 제공 ALT_MASK 수정자 키로 ALT키를 사용 CTRL_MASK 수정자 키로 CTRL키를 사용 META_MASK 수정자 키로 META키를 사용 SHIFT_MASK 수정자 키로 SHIFT키를 사용 생성자 ActionEvent(Object source, int id, String command) ActionEvent(Object sourec, int id, String command, int modifiers) source : 이벤트를 발생한 객체 type : 이벤트의 타입 command : 이벤트를 발생시킨 컴포넌트의 레이블 modifiers : 이벤트가 발생할 때 같이 사용된 수정키를 의미하는 상수
11
이벤트 종류 - (2) ActionEvent 메소드 String getActionCommand()
액션과 관련된 명령어 문자열을 리턴 예를 들어 버튼이 눌려져서 이벤트가 발생하였다면, 이 메소드는 버튼의 레이블을 문자열로 리턴 int getModifiers() 액션이 발생할 때 눌려진 모디파이어 키를 리턴 (ALT, CTRL, META, SHIFT) 나타내는 상수 값을 리턴
12
이벤트 처리 예제(1) 버튼 예제 텍스트 필드 예제 버튼을 마우스로 클릭하는 경우에 ActionEvent 발생 (source)
실행 텍스트 필드 예제 텍스트 필드에서 엔터키를 입력하는 경우 ActionEvent 발생 (source)
13
이벤트 종류 - (3) ItemEvent 체크박스, 라디오 버튼, 선택, 리스트 항목이 선택되었을 때, 메뉴의 한 항목이 선택되었을 때, 선택된 항목이 해제될 때 발생 이벤트의 유형을 구분하기 위한 멤버 필드 SELECTED 한 항목이 선택되었을 때 ITEM_STATE_CHANGED 아이템의 상태가 변경될 때 DESELECTED 선택된 항목이 해제되었을 때 생성자 ItemEvent(ItemSelectable source, int id, Object item, int stateChange) srource : 이벤트를 발생시킨 컴포넌트 id : 이벤트의 유형 item : 이벤트 발생시 전달하고자 하는 특수한 item 객체를 의미 stateChange : item의 현재 상태를 의미
14
이벤트 종류 - (3) ItemEvent 메소드 Object getItem() 이벤트를 발생시킨 객체를 리턴
ItemSelectable getItemSelectable() 이벤트를 발생시킨 ItemSelectable 객체를 리턴 int getStateChange() 이벤트의 발생으로 변환된 상태를 리턴
15
이벤트 처리 예제(2) 체크 박스 예제 리스트 예제
체크박스를 선택하거나 선택을 해제할 때 ItemEvent 발생 (source) 실행 리스트 예제 리스트의 아이템을 더블 클릭하는 경우에는 ActionEvent, 한 번 클릭하는 경우에는 ItemEvent 발생 (source)
16
이벤트 종류 - (4) WindowEvent 윈도우가 활성화되거나, 아이콘화 될 때, 닫혀질 때 발생
이벤트의 유형을 구분하기위한 상수 제공 WINDOW_ACTIVATED 윈도우가 활성화 될 때 WINDOW_CLOSED 윈도우가 닫힐 때 WINDOW_CLOSING 사용자의 요청으로 윈도우가 닫힐 때 WINDOW_ICONIFIED 윈도우가 아이콘화 될 때 WINDOW_OPENED 윈도우가 생성될 때 생성자 WindowEvent(Window source, int id) source : 이벤트를 발생시킨 Window 객체 id : 이벤트의 유형을 의미 메소드 Window getWindow() 이벤트를 발생시킨 Window 를 리턴
17
이벤트 처리 - 아답터(Adapter) 리스너 인터페이스를 사용하여 이벤트를 처리하는 경우 인터 페이스에 선언된 모든 메소드를 오버라이딩하여 구현하여야 한다(불필요한 메소드도 구현) 자바는 리스너 인터페이스의 기능을 추상 클래스인 아답터 클래스로 제공 ComponentListener ComponentAdapter ContainerListener ContainerAdapter FocusListener FocusAdapter KeyListener KeyAdapter MouseListener MouseAdapter MouseMotionListener MouseMotionAdapter WindowListener WindowAdapter
18
이벤트 처리 예제(3) 윈도우 이벤트 예제 (source) 실행
19
이벤트 종류 - (5) MouseEvent 마우스의 동작에 따라 이벤트 발생
MouseListener(마우스 클릭과 관련된 이벤트) 메소드 MOUSE_CLICKED 마우스 클릭 MOUSE_ENTERED 마우스가 컴포넌트 영역에 진입 MOUSE_EXITED 마우스가 컴포넌트 영역에서 나왔을 때 MOUSE_PRESSED 마우스가 눌려졌을 때 MOUSE_RELEASED 마우스가 띄어졌을 때 MouseMotionListener(마우스 이동에 관련된 이벤트) MOUSE_DRAGGED 마우스 드래그 MOUSE_MOVED 마우스가 이동할 때
20
이벤트 종류 - (5) MouseEvent 생성자
MouseEvent(Component source, int id, long when, int modifiers, int x, int y, int clicks, boolean triggersPopup) source : 이벤트를 발생시킨 컴포넌트 id : 이벤트의 유형 modifiers : 이벤트가 발생하였을 때 같이 사용된 수정키를 의미 x, y : 컴포넌트에서 이벤트가 일어난 위치를 의미 clicks : 마우스가 눌러진 횟수 triggersPopup : 이 값이 true이면 이벤트가 팝업(popup) 메뉴에서 일어났 음을 의미한다
21
이벤트 종류 - (5) MouseEvent 메소드 int getX() 이벤트가 발생한 위치의 x값을 리턴
int getY() 이벤트가 발생한 위치의 y값을 리턴 Point getPoint() 이벤트가 발생한 위치를 Point 객체로 리턴 Point 클래스는 java.awt 패키지에 제공되는 클래스로 이 클래스의 객체는 이벤트가 발생한 위치의 x, y 값을 가진다 void translatePoint(int x, int y) 이벤트의 발생위치를 x, y 값으로 변환 int getClickCount() 마우스가 눌러진 횟수를 리턴
22
이벤트 처리 예제(4) 마우스 이벤트 예제 (source) 실행
23
이벤트 종류 - (6) KeyEvent 키보드로부터 입력이 일어날 때 발생 이벤트의 유형을 구분하기 위한 3개의 상수 제공
KEY_PRESSED 키가 눌려졌을 때 KEY_RELEASED 키가 띠어졌을 때 KEY_TYPED 키에 의해 문자가 생성되었을 때 생성자 KeyEvent(Component source, int id, long when, int modifiers, int code) KeyEvent(Component source, int id, long when, int modifiers, int code, char ch) source : 이벤트를 발생시킨 컴포넌트 id : 이벤트의 유형 modifiers : 이벤트 발생시 같이 사용된 수정자 키를 의미 code : 함수키와 같은 특수한 키를 의미 ch : 입력된 문자를 의미 메소드 char getKeyChar() 입력된 문자 값을 리턴 Int getKeyCode() 입력된 키의 정수형 키 코드값을 리턴
24
이벤트 종류 - (7) InputEvent Component 클래스로부터 상속된 클래스로서 추상 클래스
위 클래스로 KeyEvent, MouseEvent 클래스가 제공 메소드 boolean isAltDown() 수정자 키로 ALT 키가 사용되었으면 true, 아니면 false를 리턴 boolean isControlDown() 수정자 키로 CTRL키가 사용되었으면 true, 아니면 false를 리턴 boolean isMetaDown() 수정자 키로 META키가 사용되었으면 true, boolean isShiftDown() 수정자 키로 SHIFT키가 사용되었으면 true, int getModifiers() 이벤트 발생시 같이 사용된 수정자 키를 리턴
25
이벤트 처리 예제(5) 키 이벤트 예제 키 이벤트를 이용해서 텍스트 필드에서 숫자를 받아들이는 프로그램(source) 실행
26
이벤트 종류 - (8) TextEvent 텍스트 컴포넌드에서 텍스트 내용이 변경되는 경우에 발생 메소드
testValueChanged(TextEvent e) 텍스트 내용이 변경되는 경우에 호출 예제 SOURCE 실행
27
이벤트 종류 - (8) AdjustmentEvent
AdjustmentListener AdjustmentValueChanged(AdjustmenetEvent e) : 값이 변경되는 경우에 호출 AdjustmentEvent int getValue() : 스크롤의 이동 값을 리턴
28
이벤트 종류 - (9) ComponentEvent
컴포넌트가 감춰지거나, 감춰진 상태에서 다시 나타날 때, 이동하였을 때, 크기를 조정하였을 때 발생 4가지 유형을 위한 상수 COMPONENT_HIDDEN 컴포넌트가 감추어질 때 COMPONENT_SHOWN 감추어진 컴포넌트가 다시 나타날 때 COMPONENT_MOVED 컴포넌트가 이동하였을 때 COMPONENT_RESIZED 컴포넌트의 크기가 변동되었을 때 생성자 ComponentEvent(Component source, int type) source : 이벤트를 생성된 컴포넌트 객체를 의미 type : 이벤트의 타입을 의미 메소드 Component getComponent() 이벤트를 발생시킨 컴포넌트를 리턴
29
이벤트 처리 예제(6) 스크롤바와 컴포넌트 이벤트를 사용하는 예제
TestCanvas는 Canvas로부터 상속 받았으며, paint() 메소드에서 문자열을 그려준다. (source) TestBar 클래스는 TestCanvas를 생성하여 사용하는 클래스(source) 실행
Similar presentations