イベントの伝搬の仕組み(JDK1.0)
JDK1.0のイベントの伝搬の考え方について説明します。
イベント処理のメソッドはいずれも boolean型です。
これらのメソッドの返値はいったいどんな意味を持っているのでしょうか?
Appletクラスのイベント処理の機能は
Componentクラス
から継承したものです。
Component(のサブクラス)のオブジェクトは、
すべてイベント処理の機能を備えているわけですが、
常に自分自身でイベントの処理をするとは限りません。
場合によっては、他のオブジェクトに処理を委ねるケースもあります。
これが「イベントの伝搬」という考え方です。
イベント処理のメソッドの返値は、「イベントの伝搬が必要ない」かどうかを
表します。
返値が true の場合には、イベント処理が完了したものと見なされ、
イベントの伝搬は行われません。
返値が false の場合には、イベント処理が完了していないと見なされ、
イベントはそのオブジェクトの外側のウィンドウに伝搬されます。
このようにウィンドウの階層構造をたどってイベントが伝搬していく
モデルは、最も自然な設計と言えるでしょう。
歴史的には JDK1.0 が最初に実装された X-window のモデルと同じメカニズムです。
Componentクラスで定義されたイベント処理の各メソッドは、
内容は「空」ですが、より正確に言えば、
return false; の一行を含んでいます。
つまり、デフォルトの設定ではイベント処理は全く行われず、
そのまま外側のウィンドウのオブジェクトにイベントが渡されるわけです。

こうした「イベントの伝搬」の仕組みは、単純なアプレットの場合には
あまり重要な意味を持ちません。アプレットから見た「外側のウィンドウ」は
アプレットを表示しているブラウザになります。
したがって通常のプログラムでは、
アプレットのイベント処理メソッドの返値を通じて、
何かをコントロールすることはありません。
むしろ、アプレットの内部にコンポーネントのオブジェクトが
配置されるような場合に初めて重要な意味を持ってきます。