public interface EventDispatcher
EventDispatcher
は、イベント・ディスパッチおよび処理エンティティを表します。これは、ターゲットによって指定されたEventDispatchChain
を介して、Event
を関連付けられたEventTarget
にディスパッチする必要がある場合に使用されます。チェーン内の各EventDispatcher
は、イベント・パスおよびイベント自体に影響を及ぼすことができます。1つのEventDispatcher
が複数のチェーンに出現する場合があります。
システムではイベント配信の2つの連続したフェーズが定義されます。最初のフェーズはキャプチャ・フェーズと呼ばれ、イベントがイベント・ターゲットに関連付けられたEventDispatchChain
の最初の要素から最後の要素に移動するときに発生します。イベント・ターゲットが階層の一部である場合、このフェーズのイベントの方向は、通常、階層のルート要素からターゲットへの方向に対応します。2番目のフェーズはバブリング・フェーズと呼ばれ、最初のフェーズと逆の順序で発生します。そのため、このフェーズでは、イベントはEventDispatchChain
の最後の要素から最初の要素に戻ります。これは通常、イベント・ターゲットの階層でイベント・ターゲットからルートに戻る方向に対応します。
EventDispatchChain
の各EventDispatcher
は、イベントのディスパッチ中にイベントを残りのチェーンに転送します。この転送はdispatchEvent
メソッドで発生し、1つのEventDispatcher
が両方のディスパッチ・フェーズ中に単一のdispatchEvent
呼出しでイベントを参照できるようにする、ネストされた呼出しのチェーンを形成します。
dispatchEvent
実装のテンプレート。
public Event dispatchEvent(Event event, EventDispatchChain tail) { // capturing phase, can handle / modify / substitute / divert the event if (notHandledYet) { // forward the event to the rest of the chain event = tail.dispatchEvent(event); if (event != null) { // bubbling phase, can handle / modify / substitute / divert // the event } } return notHandledYet ? event : null;}
修飾子と型 | メソッドと説明 |
---|---|
Event |
dispatchEvent(Event event, EventDispatchChain tail)
この
EventDispatcher によって指定されたイベントをディスパッチします。 |
Event dispatchEvent(Event event, EventDispatchChain tail)
EventDispatcher
によって指定されたイベントをディスパッチします。必要なイベント処理を実行します。イベントとその以降のパスの両方をこのメソッドで変更できます。キャプチャ・フェーズ中にイベントが処理/消費されない場合、イベントを残りのチェーンにディスパッチする必要があります(event = tail.dispatch(event);
)。event
- ディスパッチを実行するイベントtail
- イベントをディスパッチする残りのチェーンnull
Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.