Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java) 이벤트 핸들링이란? 개념과 구성 요소 총정리

자바의 GUI 프로그램은 마우스, 키보드 입력은 물론 버튼, 체크박스, 텍스트 필드 같은 다양한 사용자 컨트롤과의 상호작용을 '이벤트(Event)'로 처리합니다. 이러한 이벤트를 적절히 처리해야 비로소 자바를 이벤트 기반 프로그래밍(Event-Driven Programming)으로 구현할 수 있습니다.

이벤트 핸들링의 구성 요소

자바의 이벤트 핸들링은 크게 세 가지 요소로 구성됩니다.

  • 이벤트(Event)
  • 이벤트 소스(Event Source)
  • 이벤트 리스너/핸들러(Event Listener/Handler)

1. 이벤트(Event)

  • 이벤트란 소스 객체의 상태 변화를 설명하는 객체로 정의됩니다.
  • 자바는 이러한 이벤트 클래스들을 java.awt.event 패키지 안에 다수 정의해 두고 있습니다.
  • 대표적인 이벤트로는 ActionEvent, MouseEvent, KeyEvent, FocusEvent, ItemEvent 등이 있습니다.

2. 이벤트 소스(Event Source)

  • 소스(Source)는 이벤트를 발생시키는 객체입니다.
  • 객체의 내부 상태가 어떤 방식으로든 변경될 때 이벤트가 생성됩니다.
  • 소스는 리스너가 특정 유형의 이벤트에 대한 알림을 받을 수 있도록 반드시 리스너를 등록(register)해야 합니다.
  • 대표적인 이벤트 소스로는 Button, CheckBox, List, Choice, Window 등이 있습니다.

3. 이벤트 리스너(Event Listener)

  • 리스너(Listener)는 이벤트가 발생했을 때 알림을 받는 객체입니다.
  • 리스너가 되기 위한 두 가지 필수 조건은 다음과 같습니다.
    - 하나 이상의 소스 객체에 등록되어 이벤트 알림을 받을 수 있어야 합니다.
    - 알림을 받아 처리할 메서드를 반드시 구현해야 합니다.
  • 자바는 java.awt.event 패키지 아래에 이벤트를 수신하고 처리하기 위한 인터페이스 집합을 제공합니다.
  • 대표적인 리스너로는 ActionListener, MouseListener, ItemListener, KeyListener, WindowListener 등이 있습니다.

예제 코드

다음은 버튼 클릭 시 ActionEvent를 처리하는 간단한 예제입니다.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class EventListenerTest extends JFrame implements ActionListener {
    JButton button;

    public static void main(String args[]) {
        EventListenerTest object = new EventListenerTest();
        object.createGUI();
    }

    void createGUI() {
        button = new JButton(" Click Me !");
        setSize(300, 200);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        add(button);
        button.addActionListener(this);
    }

    public void actionPerformed(ActionEvent ae) {
        if (ae.getSource() == button) {
            JOptionPane.showMessageDialog(null, "Generates an Action Event");
        }
    }
}

실행 결과

자바(Java) 이벤트 핸들링이란? 개념과 구성 요소 총정리

위 예제에서 JFrame은 이벤트 소스 역할을 하는 버튼을 포함하고 있으며, 자기 자신(this)을 ActionListener로 등록합니다. 사용자가 버튼을 클릭하면 ActionEvent가 발생하고, actionPerformed() 메서드가 호출되어 다이얼로그 창에 메시지가 표시됩니다.