JavaA2Z

KAB-studio > プログラミング > JavaA2Z > イベントリスナーとは

イベントリスナー

日本語 聞く人
英語 event listener
ふりがな いべんとりすなー
フリガナ イベントリスナー

解説

何らかのイベントが発生した場合に呼ばれるメソッドを持つクラス
「キーが入力された」「マウスがクリックされた」といった「イベント」が発生する場合、そのイベントに対応する処理をするためのメソッドを用意する必要がある。そのメソッドを持つクラスが「イベントリスナー」である。
 
ウィンドウのようなGUIでは、ユーザーの操作に対応した処理をプログラムする必要がある。だが、その処理をプログラミングするために全体を作り直していては無駄になる。
そこで、ライブラリ側はイベントに対応するメソッドを持つインターフェイスを作り、ウィンドウ側のクラスにこのインターフェイス実装クラスを渡せるようにしておく。プログラマーはそのインターフェイスオーバーライドしたメソッド実装したクラスを作り、このクラスインスタンスへの参照を渡すことで、イベントが発生した際にオーバーライドしたメソッドが呼び出される。つまり、ポリモーフィズムを利用することで「イベントの処理をするメソッドのみを作る」ようにしているわけである。
これがイベントリスナーの仕組みであり、元々用意してある「イベントに対応するメソッドを持つインターフェイス」もしくはその実装クラスを「イベントリスナー」と呼ぶ。
 
たとえばアプレットでマウスイベントを処理する場合、MouseListenerインターフェイス実装クラスを作る。このインターフェイスはマウスのイベントに対応したmouseClicked()メソッド等を持つため、実装クラスではこれらのメソッドオーバーライドする。
このクラスAppletクラスのaddMouseListener()メソッドに渡すことで、マウスイベントが発生した際にオーバーライドしたメソッドが呼び出される。

参考サイト


(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
import java.applet.Applet;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;

/**
*   Eclipseで試す場合には、「デバッグ」の
*   「Java Applet」として新規に作成してください。
*/
public class Sample extends Applet
{
    /**
    *   アプレットが起動した時に呼ばれます。
    */
    public void init()
    {
        System.out.println( "Sample#init()" );
        // マウスイベントを受け取るイベントリスナーを追加します。
        addMouseListener( new NormalMouseListener() );
    }

    /**
    *   アプレットが閉じられた時に呼ばれます。
    */
    public void destroy()
    {
        System.out.println( "Sample#destroy()" );
    }

    /**
    *   アプレットがアクティブになった時に呼ばれます。
    */
    public void start()
    {
        System.out.println( "Sample#start()" );
    }

    /**
    *   アプレットが非アクティブになった時に呼ばれます。
    */
    public void stop()
    {
        System.out.println( "Sample#stop()" );
    }
}

/**
*   マウスイベントリスナー
*   これが、マウスイベントを受け取るイベントリスナーです。
*/
class NormalMouseListener implements MouseListener
{
    /**
    *   クリックされました。
    */
    public void mouseClicked( MouseEvent mouseEvent )
    {
        System.out.println( "NormalMouseListener#mouseClicked()" );
    }

    /**
    *   押されました。
    */
    public void mousePressed( MouseEvent mouseEvent )
    {
        System.out.println( "NormalMouseListener#mousePressed()" );
    }

    /**
    *   離されました。
    */
    public void mouseReleased( MouseEvent mouseEvent )
    {
        System.out.println( "NormalMouseListener#mouseReleased()" );
    }

    /**
    *   マウスカーソルが入りました。
    */
    public void mouseEntered( MouseEvent mouseEvent )
    {
        System.out.println( "NormalMouseListener#mouseEntered()" );
    }

    /**
    *   マウスカーソルが出ました。
    */
    public void mouseExited( MouseEvent mouseEvent )
    {
        System.out.println( "NormalMouseListener#mouseExited()" );
    }
}
// Sample.java
import java.applet.Applet;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;

/**
*   Eclipseで試す場合には、「デバッグ」の
*   「Java Applet」として新規に作成してください。
*/
public class Sample extends Applet
{
    /**
    *   アプレットが起動した時に呼ばれます。
    */
    public void init()
    {
        System.out.println( "Sample#init()" );
        // マウスイベントを受け取るイベントリスナーを追加します。
        addMouseListener( new NormalMouseListener() );
    }

    /**
    *   アプレットが閉じられた時に呼ばれます。
    */
    public void destroy()
    {
        System.out.println( "Sample#destroy()" );
    }

    /**
    *   アプレットがアクティブになった時に呼ばれます。
    */
    public void start()
    {
        System.out.println( "Sample#start()" );
    }

    /**
    *   アプレットが非アクティブになった時に呼ばれます。
    */
    public void stop()
    {
        System.out.println( "Sample#stop()" );
    }
}

/**
*   マウスイベントリスナー
*   これが、マウスイベントを受け取るイベントリスナーです。
*/
class NormalMouseListener implements MouseListener
{
    /**
    *   クリックされました。
    */
    public void mouseClicked( MouseEvent mouseEvent )
    {
        System.out.println( "NormalMouseListener#mouseClicked()" );
    }

    /**
    *   押されました。
    */
    public void mousePressed( MouseEvent mouseEvent )
    {
        System.out.println( "NormalMouseListener#mousePressed()" );
    }

    /**
    *   離されました。
    */
    public void mouseReleased( MouseEvent mouseEvent )
    {
        System.out.println( "NormalMouseListener#mouseReleased()" );
    }

    /**
    *   マウスカーソルが入りました。
    */
    public void mouseEntered( MouseEvent mouseEvent )
    {
        System.out.println( "NormalMouseListener#mouseEntered()" );
    }

    /**
    *   マウスカーソルが出ました。
    */
    public void mouseExited( MouseEvent mouseEvent )
    {
        System.out.println( "NormalMouseListener#mouseExited()" );
    }
}

この単語を含むページ

「みだし」に含まれているページ

「解説」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/05/29
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。