Web develop/JAVA

[JAVA] 자바 GUI Event 처리 방법

ForA 2019. 4. 30. 17:44
728x90

EVENT 처리

Event: 컴포넌트에서 사건이 발생했을 때 기능을 부여하는 것. SQL에서는 'trigger'라고 불림

  • 사건: 버튼눌림, 마우스움직임, 체크하기, 텍스트쓰기 등
  • 기능: 실행문장들 기술
  • Button을 클릭했을 때, Scrollbar 조절바를 움직였을 때, TextField에 글자를 썼을 때, Frame 우측상단의 X버튼을 클릭했을 때 등등

Event 처리방법

  1. 기능 부여할 컴포넌트 선정 (어떤 컴포넌트를 이벤트소스로 사용 할 지)

     class My {
         Frame f
         Button bt_hello, bt_exit;
         Checkbox cb_apple;
         List list;
     } 
     // 이벤트소스 후보자(사건유발자): f, bt_hello, bt_exit, cb_apple, list
     // <선정> bt_hello, bt_exit, list / <자료형> Button, List
  2. 선정된 이벤트소스 add~listenere 클래스 API문서혹은 검색으로 찾기

    • Button : addActionListener(ActionListener l);
    • List : addItemListener(ItemListener l);
  3. EventListener 인터페이스 상속

    • 분석된 이벤트 클래스에서 Event대신 Listener 붙임

      ActionEvent --> ActionListener
      ItemEvent --> ItemEventListener
      MouseEvent --> MouseListener

  3-2. (인터페이스 내의)선언된 메소드를 클래스에서 구현 (오버라이딩)

class A extends Frame implements ActionListener{ 
//implemets, 컴포넌트와 새로추가되는 핸들러를 연결하는 역할
public void actionPerformed(ActionEvent e){
     //코드문장 : 이벤트 발생시(예: 버튼눌림) 실행할 기능 구현
 }// ==>이벤트 처리부(EventHandler)  ---
                                     ==> 이벤트 소스(EventSource)
 public void itemStateChanged(ItemEvent e){}
}
  1. 연결!

      이벤트 소스          <==연결===>     이벤트 처리부
      (사건을 발생시키는 컴포넌트) (기능 정의하는 메소드)
    
    이벤트소스명.add인터페이스명(이벤트핸드러위치 ); //연결자 등록
    
    class My {
     My() {
    
         f.setSize();
         f.setVisible();
         //연결자 등록
         bt_hello.addActionListener(this);
         bt_exit.addActionListener(this);
    
         list.addItemListener(this);
     }
     }