さて、今回使った
ActionListenerですが、これは「
アクションイベント(ActionEvent)」と呼ばれるイベントの処理をする代理人です。イベントというのはたくさんの種類がありますから、その種類ごとに別々にクラスが用意されているんですね。
この
ActionListenerのように、「イベント処理の機能を用意したインターフェイス」のことを「
イベントリスナー」って呼んでます。アクションイベントのリスナーは、
ActionListener。実にわかりやすいですね。じゃあ、ウィンドウを閉じたりしたときのリスナーなら
WindowListenerか、と思うでしょう? ズバリ、その通りなのです。マウスのイベントのリスナーは
MouseListener。ね、基本的な考え方がわかれば、意外とわかりやすいネーミングでしょう?
それぞれのリスナーには、「こういうイベントが起きたらこのメソッドを実行する」って仕組みが最初から組み込まれています。ですから、私たちは使いたいイベントに対応するメソッドを用意しておけばいいんです。今回使った
ActionListenerには、1つだけメソッドが用意されています。
public void actionPerformed(ActionEvent ev){
…ここにいろいろ書く…
}
こんなものですね。これが「アクションイベントが起きた時に呼び出されるメソッド」なわけです。ここで、実行する命令を書いておけば、それがイベント発生時に実行されます。このメソッドはどういう意味かなど、今は深く考えないで下さい。「この通りに書けば、イベントの時にこのメソッドが呼び出されるんだ」とだけ知っておけば十分です。
では、今回のサンプルで、
actionPerformedで実行している処理を見てみましょう。こういうものでした。
System.exit(0);
この「
System」ってのは、システム関係を示すクラスだと思って下さい。そして「
exit(0)」は、プログラムを終了するメソッドです。まあ、これは「
System.exit(0)と書くと終了するのだ」と無条件に暗記してしまうのがいいでしょう。
こうして代理人のクラスは用意できました。が、これだけではダメです。こいつのインスタンスを、使いたい部品に組み込んでやらないといけません。それを行なっているのが、Test5のコンストラクタにある、この部分です。
ClickAction act = new ClickAction();
mybutton.addActionListener(act);
まず最初に
ClickActionのインスタンスをnewで作って、actに設定していますね。そして、「
addActionListener」というメソッドで、これを
mybuttonに組み込んでいます。
リスナーの組み込みは、全て「
add○○Listener」というような形をしています。
ActionListenerの組み込みだから、
addActionListener。それじゃ、
WindowListenerの組み込みなら
addWindowListenerか、と思うでしょう? ズバリその通りなんです。ならマウスのイベントは…って、くどいからやめますけど、そんな具合にメソッドでリスナークラスのインスタンスを組み込んで、初めてそれが使えるようになるのですね。