モジュール java.desktop
パッケージ java.awt

インタフェースKeyEventDispatcher

  • 既知のすべての実装クラス:
    DefaultFocusManager, DefaultKeyboardFocusManager, FocusManager, KeyboardFocusManager
    関数型インタフェース:
    これは関数型インタフェースなので、ラムダ式またはメソッド参照の代入先として使用できます。

    @FunctionalInterface
    public interface KeyEventDispatcher
    KeyEventDispatcherは、すべてのKeyEventsのターゲット指定とディスパッチに関して現在のKeyboardFocusManagerと協力します。 現在のKeyboardFocusManagerによって登録されたKeyEventDispatchersは、それぞれのターゲットにディスパッチされる前にKeyEventsを受け取ります。これにより、各KeyEventDispatcherはイベントのターゲットの再指定、消費、イベント自体のディスパッチ、またはその他の変更を行うことができます。

    KeyboardFocusManager自体がKeyEventDispatcherを実装します。 デフォルトで、現在のKeyboardFocusManagerは、登録されたKeyEventDispatchersによりディスパッチされないすべてのKeyEventsのシンクになります。 現在のKeyboardFocusManagerはKeyEventDispatcherとしての登録を完全に解除することはできません。 ただし、KeyEventDispatcherが実際にディスパッチしたかどうかにかかわらずKeyEventをディスパッチしたことを報告する場合は、KeyboardFocusManagerはKeyEventに関してそれ以上の処理は行いません (クライアント・コードは、現在のKeyboardFocusManagerをKeyEventDispatcherとして1回以上登録することは可能ですが、通常これは不要であり、お薦めできません)。

    導入されたバージョン:
    1.4
    関連項目:
    KeyboardFocusManager.addKeyEventDispatcher(java.awt.KeyEventDispatcher), KeyboardFocusManager.removeKeyEventDispatcher(java.awt.KeyEventDispatcher)
    • メソッドのサマリー

      すべてのメソッド インスタンス・メソッド 抽象メソッド 
      修飾子と型 メソッド 説明
      boolean dispatchKeyEvent​(KeyEvent e)
      このメソッドは、現在のKeyboardFocusManagerによって呼び出され、このKeyEventDispatcherがそのメソッドの代わりに指定されたイベントをディスパッチするよう要求します。
    • メソッドの詳細

      • dispatchKeyEvent

        boolean dispatchKeyEvent​(KeyEvent e)
        このメソッドは、現在のKeyboardFocusManagerによって呼び出され、このKeyEventDispatcherがそのメソッドの代わりに指定されたイベントをディスパッチするよう要求します。 このKeyEventDispatcherは自由にイベントのターゲットの再指定、イベントの消費、イベント自体のディスパッチ、またはその他の変更を行うことができます。 通常、この機能はKeyEventsをフォーカスの所有者以外のComponentsに送信するために使用されます。 これは、たとえばアクセス可能な環境においてフォーカス不可能なWindowsの子をナビゲートするときに役に立ちます。 KeyEventDispatcherがKeyEvent自体をディスパッチする場合は、redispatchEventを使用して、現在のKeyboardFocusManagerがこのKeyEventDispatcherに再度イベントのディスパッチを再帰的に要求することを防ぐ必要があります。

        このメソッドの実装がfalseを返す場合、KeyEventはチェーンの次のKeyEventDispatcherに渡され、現在のKeyboardFocusManagerで終了します。 実装がtrueを返す場合、KeyEventはディスパッチされたものと見なされ(実際にディスパッチされる必要はありません)、現在のKeyboardFocusManagerはKeyEventに関してこれ以上の処理を行いません。 このような場合、KeyboardFocusManager.dispatchEventは同様にtrueを返します。 実装がKeyEventを消費するにもかかわらずfalseを返す場合、消費されたイベントはなおチェーンの次のKeyEventDispatcherに渡されます。 開発者はKeyEventがターゲットにディスパッチされる前に消費されているかどうかをチェックすることが重要です。 デフォルトでは、現在のKeyboardFocusManagerは消費されたKeyEventをディスパッチすることはありません。

        パラメータ:
        e - ディスパッチするKeyEvent
        戻り値:
        KeyboardFocusManagerがKeyEventに関してこれ以上の処理を行わない場合はtrue、そうでない場合はfalse
        関連項目:
        KeyboardFocusManager.redispatchEvent(java.awt.Component, java.awt.AWTEvent)