イベントの伝搬と Event クラスの詳細

アクション処理のイベントの伝搬の考え方と Event クラスの詳細について 説明します。
アクション処理を外部のコンポーネントに伝搬するかどうかは、 そのコンポーネントの action() メソッドの返値によって判定されます。 Componentクラスの action()メソッドの定義は、ほとんど空でが、 正確に言うと return false; の一行があります。 action()メソッドがこのデフォルトの内容しか含まない時は、 アクションの処理はコンポーネントの外側の親のオブジェクトに伝えられます。 Buttonクラスのオブジェクトのアクションを アプレットの action() メソッドで一括して 処理できたのは、この仕組みのおかげです。 逆に action()メソッドを独自に処理できるようにして、外部にアクションを伝搬する 必要がない場合には、メソッドの返値は true にしてください。 こうすると、外部のコンポーネント(たとえば アプレット)の action() メソッドが不必要に呼び出されなくなります。 もちろん、コンポーネントの内部と外部の両方の action() メソッドで 処理を行ってもかまいません。 コンポーネント自身の action()メソッドで入力のエラーチェックを行い、 アプレットの action() の中でそのデータを処理するようなこともできるわけです。


action()メソッドの変値でイベントの伝搬がコントロールされる。

アクションの処理に必要な情報は、2つの引数である Event 及び Object クラスのオブジェクトから得ることができます。 たとえば 前節のサンプル では、どのボタンが押されたかを Object から文字列の情報を取り出して判定しています。 Event および Object クラスのデータと、それに関連するメソッドを 以下に説明しましょう。
 Eventクラスのオブジェクトは、 イベントに関連するあらゆる情報が含まれています。 変数はいずれも public なので特別なメソッドを使わなくても直接アクセスできます。
Eventクラスで良く利用される情報
変数名 意味
x イベント発生のX座標
y イベント発生のY座標
key キーのコード
when イベント発生のタイム・スタンプ
(秒単位の値 long型)
target イベントが発生したオブジェクト
clickCount クリックの回数
(普通のクリックなら値は1)
(ダブル・クリックなら値は2) (その他のイベントなら値は0)

Object は、あらゆるクラスの祖先となるメタ・クラスです。 このクラスが引数として登場するのは、 action()メソッドに伝えたい情報が、どんな形式のデータであるか不定だからです。 toString()メソッドで、そのオブジェクトに関する情報を 文字列で得ることができます。 Objetctとしてどんな種類のデータが返されるかは、 各クラスによって異なるので注意してください。 たとえば Button の場合はStringクラスであるラベルの文字列が返り、 Checkboxの場合は、Checkboxの状態の情報を Booleanクラスのオブジェクト として返します。 また、オブジェクトのクラスをチェックするために キーワード instanceof が利用できます。 これは Object クラスのメソッドではなく Java言語で予約された命令です。 obj instanceof String は、obj が Stringクラスのオブジェクトであるかを 判定します。 結果は boolean型の値として返されます。