|
자바에서는 어떻게 이벤트 처리르 하는건가?'
- 윈도우 환경에서는 대부분의 응용프로그램이 이벤트·드리븐 프로그래밍
방식으로 작성됨
- 자바의 AWT에서도 물론 이벤트·드리븐 프로그래밍방식을 지원
√ 자바에서는 모든 사용자의 액션을 이벤트라는 클래스를 표현
√ 사용자의 액션에 의해 발생한 이벤트 객체는 사용자의 액션에 관련된
정보를 가지게 됨
(예, 마우스 클릭, 무브, 더블클릭)
1. 이벤트 관련 클래스
클래스명 |
기능 |
ActionEvent |
컴포넌트가 활성화될 때 발생하는 이벤트 |
ContainerEvent |
컨테이너에 컴포넌트가 추가/삭제시 발생하는 이벤트 |
FocusEvnet |
컴포넌트에 포커스가 들어왔을 때 발생하는 이벤트 |
ItemEvent |
리스트박스와 같은 컴포넌트에서 목록값 선택시 발생하는 이벤트 |
KeyEvent |
키보드 입력에 의해서 발생하는 이벤트 |
MouseEvent |
마우스의 움직임에 의해서 발생하는 이벤트 |
Window Event |
윈도우의 열기/닫기, 활성화 관련한 이벤트 |
2. 주요 컴포넌트별 발생가능한 이벤트 처리
컴포넌트 명 |
이벤트 |
Button |
ActionEvent, Mouse Event, Key Event, Focus Event, 등등 |
Choice |
ItemEvent, KeyEvent, MouseEvent, FocusEvent 등등 |
Dialog |
ContainerEvent, Window Event, Focus Event, Key/MouseEvent |
Frame |
ContainerEvent, WindowEvent, Focus Event, Key/MouseEvent |
List |
ActionEvent, ItemEvent, KeyEvent, MouseEvent, FocusEvent 등등 |
Menu/popup |
ActionEvent |
3. 이벤트 핸들러
√ 리스너(Listener) - 각각의 이벤트를 철디하기 위해 미리 준비된 메소드를
선언한 인터페이스를 이용함
※ 이벤트 핸들러 처리하기위한 실제적인 동작
리스터 |
메소드 |
ActionListener |
actionPerformed(Action Event) |
ContainerListener |
componentAdded(Containerevent) |
FocusListenr |
focusGrained(focusEvent) |
ItemListener |
itemStateChange(ItemEvent) |
KeyListener |
KeyPressed(KeyEvent),KeyReleased(KeyEvent) |
MouseListener |
MouseClicked(MouseEvent), mouseEntered(MouseEvent) mouseExiteed(mouseEvent), mousePressed(MouseEvent) |
MouseMotionLitener |
mouseDragged(MouseEvent),MouseMoved(MouseEvent) |
TextListener |
textValueChanged(TextEvent)
|
WindowListener |
windowOpened(WindowEvent),WindowClosing(WindowEvent) windowClosed(WindowEvent),WindowActivated(WindowEvent) windowDeactivated(WindowEvent) |
마우스 관련 클래스 및 메소드 정리
//마우스 좌표구하기
PointerInfo pt=MouseInfo.getPointerInfo();
pt.getLocation()
마우스, 키보드 제어 관련 클레스 및 메소드
java.awt.robot
Robot robot = new Robot();
robot.delay(300); // 0.3초 정지
robot.keyPress(KeyEvent.VK_O);// 'O' 누르기
robot.mouseMove(300, 300); // 마우스 좌표 300,300이동
|
Exam.java
1 2 3 4 5 6 7 8 9 10 | package test; import java.awt.*; import java.awt.event.*; class Exam extends Frame { public static void main(String[] args) { ClassFrame classFrame = new ClassFrame(); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | package test; import java.awt.*; import java.awt.event.*; public class ClassFrame extends Frame { Frame f; Label lbl; Button btn1,btn2; public ClassFrame() { this.createComponents(); this.conectMouseEvent(); } public void createComponents() { f = new Frame(); lbl = new Label("나를 위해 노래를 불러줘\n 그녀에게 들리게 \n 사랑도(에헤~)미련도(에헤~) \n다가져가라고~"); btn1 = new Button("클릭1"); btn2 = new Button("클릭2"); f.setSize(320, 150); f.setVisible(true); f.setLayout(null); lbl.setBounds(60,40,150,20); btn1.setBounds(20,70,120,20); btn2.setBounds(150,70,120,20); f.add(lbl); f.add(btn1); f.add(btn2); } public void conectMouseEvent() { ClassListener classListener = new ClassListener(this); this.btn1.addMouseListener(classListener); this.btn2.addMouseListener(classListener); } } |
ClassListener.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | package test; import java.awt.*; import java.awt.event.*; public class ClassListener extends MouseAdapter { ClassFrame classFrame; public ClassListener(ClassFrame classFrame) { this.classFrame = classFrame; } public void mouseClicked(MouseEvent me) { System.out.println("마우스이벤트 발동!"); System.out.println(me.getSource()); Button btnEvent =(Button)me.getSource(); if(btnEvent.getLabel().equals("클릭1")) { System.out.println("마우스이벤트1"); classFrame.lbl.setText("Ballerino"); } if(btnEvent.getLabel().equals("클릭2")) { System.out.println("마우스이벤트2"); classFrame.lbl.setText("리쌍"); } } } |
'컴퓨터프로그래밍 > JAVA' 카테고리의 다른 글
Java-이미지 삽입하기 (0) | 2016.06.09 |
---|---|
Java_이벤트_adapter (0) | 2016.06.01 |
AWT 컴포넌트 - 판넬(Panel) 및 레이아웃 배치방법 (0) | 2016.05.21 |
AWT 컴포넌트의 활용 (0) | 2016.05.20 |
JAVA - AWT 컴포넌트의 이해 (0) | 2016.05.14 |