Javaプログラミング/Javaの基本

イベント処理の仕組みを理解する

AWTには、さまざまなイベントに対応する処理を行う機能が用意されています。その基本について説明しましょう。

執筆者:掌田 津耶乃


イベントとイベントリスナーの関係


AWT(Abstract Window Toolkit)のコンポーネントを使ってウインドウを表示するところまでできるようになりました。次は、「コンポーネントを操作したときに何かを行わせる」ということを考えてみましょう。例えば、ボタンをクリックすると何かの処理を実行する、というようなことですね。

こうしたユーザが何かを操作するなどプログラムに対し何かの指示を行うようなときに用いられるのが「イベント」というものです。AWTには、さまざまな操作ごとに異なるイベントが用意されています。例えば「ボタンをクリックしたらこのイベント」「マウスを動かしたらこのイベント」というような具合ですね。そして、こうしたイベントが発生したときに何らかの処理を行わせるためのものとして「イベントリスナー」というものが用意されています。

イベントリスナーの中には、発生するイベントの種類に応じて呼び出されるメソッドが用意されています。例えばマウスを操作したときのためのイベントリスナーには「マウスボタンを押し下げる」「マウスボタンを離す」「マウスポインタがコンポーネントの領域に入ってくる」「マウスポインタがコンポーネントの外に出て行く」というように、たくさんのメソッドが用意されています。もちろん、イベントの内容によって用意されているメソッドは違ってきます。

Javaでは、何かのイベントが発生すると、そのイベントが発生したコンポーネントの中を調べ、そのイベントに対応したイベントリスナーが組み込まれていないかどうかチェックします。イベントリスナーが見つからなければ、何も起こりません。もし見つかった場合には、そのイベントリスナーの中にある、所定のメソッドを呼び出してイベントの処理を行います。

イベントリスナーは、コンポーネントなどと同様にnewでインスタンスを作成し、コンポーネント内のメソッドを使って組み込みます。では、実際に簡単な例をあげて、イベントリスナーの利用について説明しましょう。ここでは、「プッシュボタンをクリックしたときのイベント処理」を行ってみます。ボタンをクリックしたときの処理はもっとも広く使われる基本中の基本ともいえるものですから。
import java.awt.*;
import java.awt.event.*;

public class Sample extends Frame {
  Label label1;
  TextField field1;
  Button button1;

  public static void main(String[] args){
    new Sample();
  }
  
  public Sample(){
    this.setLayout(null);
    this.setSize(200,140);
    label1 = new Label("こんにちは!");
    field1 = new TextField();
    button1 = new Button("Click");
    label1.setBounds(20,40,160,20);
    field1.setBounds(20,70,160,20);
    button1.setBounds(50,100,100,20);
    button1.addActionListener(new ActionAdapter());
    this.add(label1);
    this.add(field1);
    this.add(button1);
    this.setVisible(true);
  }
}

class ActionAdapter implements ActionListener {

  public void actionPerformed(ActionEvent ev){
    System.out.println("クリックしました!");
  }
}
ボタンをクリックすると、コマンドプロンプトに「クリックしました!」と表示されます。


これをコンパイルし実行してみましょう。そして「Click」と表示されたボタンをクリックしてみると、コマンドプロンプトに「クリックしました!」と表示されます。ボタンをクリックしたときに、あらかじめ用意しておいた処理が実行されていることがわかりますね。

  • 1
  • 2
  • 3
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます