컴퓨터프로그래밍/JAVA

JAVA-AWT이벤트처리

zelkova 2016. 5. 24. 23:46

<목차로 돌아가기>

  AWT 이벤트 처리

자바에서는 어떻게 이벤트 처리르 하는건가?'


 - 윈도우 환경에서는 대부분의 응용프로그램이 이벤트·드리븐 프로그래밍
   방식으로 작성됨

 - 자바의 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();

    }

 }



ClassFrame.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

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("리쌍");

       }

    }

 } 



반응형