イベントリスナー (EventListener)

イベントリスナーの種類

すべてのイベントのリスナーインターフェイス (listener interface) は、java.util.EventListenerインターフェイスから派生しています。インターフェイス java.util.EventListener の使用 (Java Platform SE 7)

java.awt.datatransferパッケージ

インターフェイス 説明
FlavorListener FlavorEventを待機するリスナーオブジェクトを定義する。

java.awt.dndパッケージ

インターフェイス 説明
DragGestureListener このインターフェイスはDragGestureRecognizerをソースとし、その (サブ) クラスのオブジェクトがドラッグ開始ジェスチャーを検出したときに呼び出される。
DragSourceListener DragSourceListenerは、ドラッグ&ドロップ操作に関するオリジネータのイベントインターフェイスを定義して、ユーザーのジェスチャーの状態を監視したり、ドラッグ&ドロップ操作全体の最適な「ドラッグオーバー」フィードバックをユーザーに提供する。
DragSourceMotionListener ドラッグ操作中のマウスモーションイベントを受け取るためのリスナーインターフェイス。
DropTargetListener DropTargetListenerインターフェイスは、対象のDropTargetを含むDnD操作の通知をDropTargetクラスが提供するのに使うコールバックインターフェイス。

java.awt.eventパッケージ

インターフェイス 説明
ActionListener アクションイベントを受け取るためのリスナーインターフェイス。
AdjustmentListener 調整イベントを受け取るためのリスナーインターフェイス。
AWTEventListener ComponentやMenuComponent、またはそれらのサブクラスのインスタンスであるオブジェクトにディスパッチされるイベントの通知を受信するためのリスナーインターフェイス。
ComponentListener コンポーネントイベントを受け取るためのリスナーインターフェイス。
ContainerListener コンテナイベントを受け取るためのリスナーインターフェイス。
FocusListener コンポーネント上のキーボードフォーカスイベントを受け取るためのリスナーインターフェイス。
HierarchyBoundsListener 移動およびサイズ変更された上位クラスのイベントを受け取るためのリスナーインターフェイス。
HierarchyListener 階層変更イベントを受け取るためのリスナーインターフェイス。
InputMethodListener インプットメソッドイベントを受け取るためのリスナーインターフェイス。
ItemListener 項目イベントを受け取るためのリスナーインターフェイス。
KeyListener このリスナーは、キーボードイベント (キーストローク) を受け取るためのインターフェイス。
MouseListener コンポーネント上の「関連する」マウスイベント (プレス、リリース、クリック、コンポーネントへの出入り) を受け取るためのリスナーインターフェイス。
MouseMotionListener コンポーネント上のマウスモーションイベントを受け取るためのリスナーインターフェイス。
MouseWheelListener コンポーネント上のマウスホイールイベントを受け取るためのリスナーインターフェイス。
TextListener テキストイベントを受け取るためのリスナーインターフェイス。
WindowFocusListener WindowEventsを受け取るためのリスナーインターフェイス。
WindowListener ウィンドウイベントを受け取るためのリスナーインターフェイス。
WindowStateListener ウィンドウの状態イベントを受け取るためのリスナーインターフェイス。

java.beansパッケージ

インターフェイス 説明
PropertyChangeListener PropertyChangeイベントは、Beanが「バウンド」プロパティーを変更するたびにトリガーされる。
VetoableChangeListener VetoableChangeイベントは、Beanが「制約」プロパティーを変更するたびにトリガーされる。

java.beans.beancontextパッケージ

インターフェイス 説明
BeanContextMembershipListener 仕様に準拠して実装されたBeanContextは、BeanContextのメンバーの状態が変更されたときにこのインターフェイスのイベントをトリガーする。
BeanContextServiceRevokedListener BeanContextServiceRevokedEventオブジェクトを受け取るためのリスナーインターフェイス。
BeanContextServices BeanContextServicesインターフェイスは、BeanContextChildオブジェクトが総称サービスを受けられるようにするための機構をBeanContextに提供する。
BeanContextServicesListener BeanContextServiceAvailableEventオブジェクトを受け取るためのリスナーインターフェイス。

java.util.prefsパッケージ

インターフェイス 説明
NodeChangeListener 設定ノード変更イベントを受け取るためのリスナー。
PreferenceChangeListener 設定変更イベントを受け取るためのリスナー。

javax.imageio.eventパッケージ

インターフェイス 説明
IIOReadProgressListener 呼び出し側にイメージとサムネールの進捗の読み込みメソッドを通知する、ImageReader実装で使用されるインターフェイス。
IIOReadUpdateListener 呼び出し側にイメージとサムネールのピクセル更新の読み込みメソッドを通知する、ImageReader実装で使用されるインターフェイス。
IIOReadWarningListener 呼び出し側にイメージとサムネールの警告 (重大ではないエラー) の読み込みメソッドを通知する、ImageReader実装で使用されるインターフェイス。
IIOWriteProgressListener 呼び出し側にイメージの進捗の書き込みメソッドを通知する、ImageWriter実装で使用されるインターフェイス。
IIOWriteWarningListener 呼び出し側にイメージとサムネールの警告 (重大ではないエラー) の読み込みメソッドを通知する、ImageWriter実装で使用されるインターフェイス。

javax.managementパッケージ

インターフェイス 説明
NotificationListener 通知の受信を望むオブジェクトによって実装される必要がある。
NamespaceChangeListener 名前空間の変更を対象とするリスナーが実装しなければならないメソッドを指定する。
NamingListener このインターフェイスは、NamingEventを処理するリスナー側インターフェイスのルート。
ObjectChangeListener OBJECT_CHANGEDのイベント型を持つNamingEventのリスナーが実装しなければならないメソッドを指定する。

javax.naming.ldapパッケージ

インターフェイス 説明
UnsolicitedNotificationListener このインターフェイスは、UnsolicitedNotificationEventを処理するためのもの。

javax.net.sslパッケージ

インターフェイス 説明
HandshakeCompletedListener このインターフェイスは、指定されたSSL接続上でSSLプロトコルのハンドシェークが完了したことを通知するクラスに実装する。
SSLSessionBindingListener このインターフェイスは、SSLSessionにバインドされているかどうかを認識する必要のあるオブジェクトに実装する。

javax.sound.midiパッケージ

インターフェイス 説明
ControllerEventListener ControllerEventListenerインターフェイスは、要求した型のMIDI制御変更イベントの処理をSequencerが完了した時点で通知を受け取る必要のあるインスタンスのクラスが実装する。
MetaEventListener MetaEventListenerインターフェイスは、SequencerがMetaMessageの処理を完了した時点で通知を受け取る必要のあるインスタンスのクラスが実装する。

javax.sound.sampledパッケージ

インターフェイス 説明
LineListener LineListenerインターフェイスを実装するクラスのインスタンスを登録して、ラインの状態が変化したときにイベントを受信できます。

javax.sqlパッケージ

インターフェイス 説明
ConnectionEventListener PooledConnectionオブジェクトによって生成されたイベントが通知されるよう、登録するオブジェクト。
RowSetListener RowSetオブジェクトの有効期間中に重要なイベントが発生した場合に、通知を希望するコンポーネントによって実装されているインターフェイス。
StatementEventListener Statementプール内のPreparedStatementで発生したイベントの通知を受けるように、登録されているオブジェクト。

javax.swingパッケージ

インターフェイス 説明
Action Actionインターフェイスは、同じ機能が複数のコントロールによってアクセスされる場合に、ActionListenerインターフェイスに対する便利な拡張機能を提供する。

javax.swing.eventパッケージ

インターフェイス 説明
AncestorListener 上位クラスリスナー。
CaretListener テキストコンポーネントのキャレット位置の変更リスナー。
CellEditorListener CellEditorListenerは、CellEditorでの変更を待機するオブジェクトのインターフェイスを定義する。
ChangeListener ChangeEventを待機するリスナーオブジェクトを定義する。
DocumentListener オブザーバがテキストドキュメントへの変更の通知を受け取るように登録するためのインターフェイス。
HyperlinkListener ハイパーリンクリスナー。
InternalFrameListener 内部フレームイベントを受け取るためのリスナーインターフェイス。
ListDataListener リストデータリスナー。
ListSelectionListener リストの選択範囲の値が変更されたときに通知されるリスナー。
MenuDragMouseListener メニューでのマウスドラッグに関するリスナーを定義する。
MenuKeyListener メニューキーリスナー。
MenuListener メニューイベント用のリスナーを定義する。
MouseInputListener MouseListenerインターフェイスとMouseMotionListenerインターフェイスの両方のすべてのメソッドを実装するリスナー。
PopupMenuListener ポップアップメニューリスナー。
RowSorterListener RowSorterListenerは、RowSorterへの変更の通知を受ける。
TableColumnModelListener TableColumnModelListenerは、TableColumnModelでの変更を待機するオブジェクトのインターフェイスを定義する。
TableModelListener TableModelListenerは、TableModel内での変更を待機するオブジェクトのインターフェイスを定義する。
TreeExpansionListener ツリーがノードの展開または折りたたみを行なったときに通知を受けるリスナー。
TreeModelListener TreeModelでの変更を待機するオブジェクト用のインターフェイスを定義する。
TreeSelectionListener TreeSelectionModelの選択範囲が変更されたときに通知を受けるリスナー。
TreeWillExpandListener ツリーがノードの展開または折りたたみを行なったときに通知を受けるリスナー。
UndoableEditListener 取り消し可能なオペレーションに関する情報が必要なクラスによって実装されるインターフェイス。

イベントリスナーの実装の解説

イベントリスナーの実装は難解なため、これを簡単な記述に書き換えてみます。

AWTのButtonオブジェクトが発生するアクションイベントを例に考えます。これは一般的に、

Button button = new Button();
button.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {

    }
});

のような形式となります。これのイベントリスナーのインスタンスを、ローカルに定義するように書き換えます。

Button button = new Button();

// ActionListenerを実装した無名内部クラスの インスタンスを生成する
ActionListener listener = new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {

    }
};

// イベントリスナーを登録する
button.addActionListener(listener);

ActionListenerのインスタンスは無名内部クラスとして定義されているため、これに名前を与えます。

Button button = new Button();

// ActionListenerを実装した ローカル内部クラスを定義する
class MyActionListener implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {

    }
}

// イベントリスナーのインスタンスを生成する
ActionListener listener = new MyActionListener();

button.addActionListener(listener);
Javaのドキュメントから検索