java/이벤트 처리

이벤트란?

appmaster 2019. 5. 11. 17:06

이벤트란?

일반적인 프로그램은 알고리즘에 따라서 문장들을 차례대로 실행하여 작업을 진행하지만, GUI 프로그램에서는 버튼과 같은 컴포넌트들을 화면에 배치한 후에, 사용자의 입력을 기다리고 있다가, 사용자가 특정 버튼을 누르면 작업이 진행된다. 이와같이 어떤 이벤트가 일어나는지를 감시하고 있다가 이벤트가 발생하면 적절한 처리를 해주는 프로그래밍 방식을 이벤트-구동 프로그래밍(event-driven programming)이라고 한다.

 

 

 

이벤트는 누가 처리하는가?

객체 지행 프로그램에서는 모든 작업을 객체(object)가 한다. 이벤트 처리도 객체가 한다. 이벤트를 처리하는 클래스를 정의하고 이 클래스의 객체 A를 생성한다면, 이 객체를 가지고 이벤트를 발생하는 객체 B(예를 들어 버튼)에 등록하면 된다. 차후에 이벤트가 발생하면 등록된 객체 A가 이벤트를 처리하게 된다. 이것을 위임(delegation)이라고 한다.

 

 

 

step1. 이벤트를 처리할 클래스 정의

리스터 인터페이스는 어떤 클래스가 이벤트를 처리하기 위하여 구현해야하는 규격이다. 예를들어서 버튼을 클릭하면 액션(action event)가 발생하는데 이 이벤트를 처리하기 위한 리스너 인터페이스는 ActionListener 인터페이스이다. ActionListener에는 actionPErformed()라는 메소드가 정의되어 있다. 따라서 액션 이벤트를 처리하려면 이 메소드를 작성해야 한다. actionPerformed()는 액션 이벤트가 발생할 때마다 호출된다. 이벤트를 처리하기 위하여 MyListener라고 하는 클래스를 작성하면 다음과 같은 구조가 된다.

class MyListenr implemets ActionListenr{
   public void actionPerformed(ActionEvent e){
       //Action 이벤트를 처리하는 코드가 여기에 들어간다.    <-액션이벤트가 발생하면 호출됨
       }
 }

 

 

 

step2. 컴포넌트에 이벤트 처리 객체 등록하기

리스너 객체를 컴포넌트에 등록하는 단계이다. 컴포넌트에 리스너 객체를 등록해야만 이벤트가 발생하였을 때, 이벤트가 처리된다. 각 컴포넌트는 이벤트 리스너를 등록할 수 있는 메소드를 제공한다. 예를 들어 버튼의 경우, addActionListener()가 그러한 메소드이다. 이벤트 리스너를 등록하는 예제 코드는 다음과 같다.

public class MyFrame extends JFrame{
    ....
    public MyFrame(){
        button = new JButton("증가"); 
        button.addActionListenr(new MyListener());
        ....
    }
}

 

'java > 이벤트 처리' 카테고리의 다른 글

Mouse와 MouseMotion 이벤트  (0) 2019.05.22
람다식  (0) 2019.05.11
여러 가지 이벤트 처리 방법  (0) 2019.05.11