Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaのイベント処理とは?イベント・イベントソース・イベントリスナーの基本をわかりやすく解説

JavaのGUIアプリケーションでは、マウスキーボードによる操作、さらにボタンチェックボックステキストフィールドなどの各種ユーザーコントロールとのやり取りが、すべて「イベント」として処理されます。これらのイベントを適切に扱うことで、Javaはイベント駆動プログラミング(Event-Driven Programming)として機能します。本記事では、Javaのイベント処理を支える基本的な仕組みと構成要素について詳しく解説します。

イベント処理を構成する3つの要素

Javaのイベント処理は、次の3つの要素によって成り立っています。

  • イベント(Events)
  • イベントソース(Event Sources)
  • イベントリスナー/ハンドラー(Event Listeners / Handlers)

イベント(Events)とは

  • イベントとは、ソースオブジェクトの状態変化を表すオブジェクトとして定義されます。
  • Javaでは、こうしたイベントクラスがjava.awt.eventパッケージ内に数多く用意されています。
  • 代表的なイベントには、ActionEventMouseEventKeyEventFocusEventItemEventなどがあります。

イベントソース(Event Sources)とは

  • ソースとは、イベントを発生させるオブジェクトのことです。
  • オブジェクトの内部状態が何らかの形で変化すると、そこからイベントが発生します。
  • リスナーが特定の種類のイベント通知を受け取れるようにするため、ソース側はあらかじめリスナーを登録(register)しておく必要があります。
  • 主なイベントソースには、ButtonCheckBoxListChoiceWindowなどがあります。

イベントリスナー(Event Listeners)とは

  • リスナーとは、イベントの発生時に通知を受け取るオブジェクトです。
  • リスナーには2つの重要な要件があります。1つ目は、1つ以上のソースオブジェクトに登録され、イベント通知を受け取れること。2つ目は、通知を受け取って処理するためのメソッドを実装していることです。
  • Javaでは、イベントの受信と処理を行うための一連のインターフェースが、java.awt.eventパッケージ以下に定義されています。
  • 主なリスナーには、ActionListenerMouseListenerItemListenerKeyListenerWindowListenerなどがあります。

実装例:ボタンクリックによるアクションイベントの処理

以下は、JFrame上に配置したボタンに対してActionListenerを実装し、クリック時にメッセージダイアログを表示するシンプルなサンプルコードです。

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");
        }
    }
}

コードのポイント

  • JFrameクラスを継承しつつ、ActionListenerインターフェースを実装しています。
  • button.addActionListener(this) の呼び出しにより、自分自身をボタンのリスナーとして登録しています。
  • ボタンがクリックされると actionPerformed() メソッドが自動的に呼び出され、getSource() でイベントの発生元を判定した上で処理を実行します。

実行結果

プログラムを実行すると、画面中央に「Click Me !」ボタンが配置されたウィンドウが表示されます。このボタンをクリックすると、アクションイベントが発生し、「Generates an Action Event」というメッセージを含むダイアログが表示されます。

Javaのイベント処理とは?イベント・イベントソース・イベントリスナーの基本をわかりやすく解説

  1. JREとJDKの違いは何?Java開発初心者向けにわかりやすく解説

    Javaを学び始めると、必ず耳にするのが「JDK」と「JRE」という2つの用語です。名前が似ているため混同されやすいのですが、それぞれ役割や含まれる機能が異なります。この記事では、両者の違いを初心者にもわかりやすく解説します。 JDK(Java Development Kit)とは JDKは「Java Development Kit」の略で、Javaアプリケーションの開発と実行に必要なすべてのツールおよびライブラリをまとめたソフトウェアパッケージです。 JDKには以下のようなものが含まれています。 コンパイラ(javac):ソースコード(.javaファイル)をバイトコード(.classファイ

  2. JavaとJavaScriptの違いとは?歴史・技術・使い分けを徹底解説

    ウェブ開発者のジェレミー・キースは2009年、「JavaとJavaScriptの関係は、ハムとハムスターの関係のようなものだ」と語りました。この比喩がどれほど正確かは議論の余地がありますが、その本質は的確です。共通する言語的ルーツを持つにもかかわらず、JavaとJavaScriptはまったく異なる2つのプログラミング言語なのです。年月とともに両者の重なりも多少増えましたが、今なおJavaScriptはウェブサイトにインタラクティブ性をもたらすフロントエンド言語の主流であり続け、Javaはサーバーサイドやアプリケーション開発で人気を保っています。開発者を採用したい方、プログラミングを学びたい方