目次> 第4章> 4.2 TOPUPPREVNEXT

4.2 イベントとリスナ

ウィンドウの上でカーソルが動いたり、ボタンがクリックされたりすることを イベント event が発生する といいます。 発生したイベントをうけとる仕組みが リスナlistener です。

前節のプログラムの12〜17行目を見てみましょう。

ColorButtom line14-19

12行目で、 JButton のインスタンスを生成し、 blue という名前をつけた後、 13〜17行目で、 blue のメソッド addActionListener を呼び出して、赤枠内のモノを渡しています。 赤枠でかこったモノが、アクションリスナ ActionLisner のインスタンスです。 正確には 「 ActionListener インターフェースを実装する 無名クラスの インスタンス 」 という言い方になります。 アクションリスナには、メソッド actionPerformed が定義されています。 青枠で囲んだ部分です。

このようにアクションリスナを登録しておくと、このボタンが押されるたびに、 メソッド actionPerformed を呼び出してもらえます。 actionPerformed を呼び出す際に、 e に発生したイベントの情報が設定されます。

リスナが登録されている状態でイベントが発生すると、あらかじめ定められたメソッドが 呼び出されます。ここでは、actionPerformed という名前の メソッドが探されます。したがって、この名前のつづりなどを間違えると、 コンパイル・エラーになります。

さて、ここで問題です。上記に、「この名前のつづりなどを間違えると」ありますが、 つづり以外の間違いとはなんでしょう。 答え

リスナと呼び出されるメソッドの名前との関係は、 Appendix D の event を参照してください。

赤枠内は無名クラスのインスタンスです。 通常は下記のように(別の場所で)クラスを定義し、 そのコンストラクタに対して new を指定するのですが、 名前をつけずにコンストラクタを直接書き込んでしまう記述方法です。

class MyActionListener implements ActionListener {
MyActionListener() {
public void actionPerformed(ActionEvent e) {
pane.setBacground( Color.blue ) ;
}
}
}

更新日:2006/04/03 TOPUPPREVNEXT