Java中級

中級 Javaで学ぶイベント駆動設計|練習問題編

導入

イベント駆動設計は、ユーザーのアクションや外部のイベントに基づいてプログラムの動作を制御する手法です。この設計パターンは、特にGUIアプリケーションやリアルタイムシステムで効果を発揮します。本記事では、Javaを用いた具体的なシチュエーションを通じて、イベント駆動設計の実践的な応用を探ります。

教科書レベルの解説(イベント駆動設計)

重要な概念の整理

イベント駆動設計では、イベントとリスナーという二つの主要なコンポーネントが存在します。イベントは、ユーザーの操作やシステムの状態変化を表します。一方、リスナーはこれらのイベントを監視し、発生した際に特定の処理を実行します。これにより、プログラムの柔軟性と拡張性が向上します。

具体的なシチュエーションとして、ユーザーがボタンをクリックした際に、別のコンポーネントの状態を更新するアプリケーションを考えます。この場合、ボタンがイベントを発生させ、リスナーがそのイベントを受け取って処理を行います。

コード例(Java)


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

public class EventDrivenExample {
    private JFrame frame;
    private JButton button;
    private JLabel label;

    public EventDrivenExample() {
        frame = new JFrame("イベント駆動設計の例");
        button = new JButton("クリックしてラベルを変更");
        label = new JLabel("初期テキスト");

        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                label.setText("ボタンがクリックされました");
            }
        });

        frame.setLayout(new java.awt.FlowLayout());
        frame.add(button);
        frame.add(label);
        frame.setSize(300, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new EventDrivenExample();
    }
}

コードの行ごとの解説

  1. フレームを作成するためのJFrameインスタンスを初期化する。
  2. ボタンを作成し、クリック時の動作を定義するためにActionListenerを追加する。
  3. ラベルを作成し、初期テキストを設定する。
  4. ボタンがクリックされたときにラベルのテキストを変更する処理を実装。
  5. フレームにボタンとラベルを追加し、ウィンドウのサイズを設定。
  6. アプリケーションを実行し、ウィンドウを表示する。

練習問題編

以下の練習問題を解いて、イベント駆動設計の理解を深めましょう。

  1. 問題1: ボタンが2回クリックされたときにラベルの色を変える機能を追加してください。

    模範解答: ActionListener内でクリック回数をカウントし、2回目のクリック時にラベルの色を変更する処理を追加します。

  2. 問題2: クリックするたびにラベルのテキストをカウントアップする機能を実装してください。

    模範解答: ラベルのテキストを整数として管理し、ボタンがクリックされるたびにその値をインクリメントして表示します。

  3. 問題3: ウィンドウが閉じられるときに確認ダイアログを表示する機能を追加してください。

    模範解答: JFrameのsetDefaultCloseOperationメソッドをオーバーライドし、ウィンドウが閉じられる際にJOptionPaneを使って確認ダイアログを表示します。

まとめ

  • イベント駆動設計は、ユーザーのアクションに応じてアプリケーションの動作を制御する手法です。
  • Javaを用いた具体的なコード例を通じて、イベントとリスナーの関係性を理解しました。
  • 練習問題に取り組むことで、実践的なスキルを身につけることができます。