模块 java.desktop
 java.awt

接口 KeyEventDispatcher

所有已知的实现类:
DefaultFocusManager , DefaultKeyboardFocusManager , FocusManager , KeyboardFocusManager
函数接口:
这是一个功能接口,因此可以用作 lambda 表达式或方法引用的赋值目标。

@FunctionalInterface public interface KeyEventDispatcher
KeyEventDispatcher 与当前的 KeyboardFocusManager 在所有 KeyEvent 的定位和调度方面进行合作。向当前 KeyboardFocusManager 注册的 KeyEventDispatcher 将在将 KeyEvent 分派到其目标之前接收 KeyEvent,从而允许每个 KeyEventDispatcher 重新定位事件、使用它、分派事件本身或进行其他更改。

请注意,KeyboardFocusManager 本身实现了 KeyEventDispatcher。默认情况下,当前的 KeyboardFocusManager 将成为所有未由注册的 KeyEventDispatcher 调度的 KeyEvent 的接收器。当前的 KeyboardFocusManager 不能作为 KeyEventDispatcher 完全注销。但是,如果 KeyEventDispatcher 报告它已调度 KeyEvent,则不管它实际上是否已调度,KeyboardFocusManager 都不会对该 KeyEvent 采取进一步的操作。 (虽然客户端代码可以将当前的 KeyboardFocusManager 注册为 KeyEventDispatcher 一次或多次,但这通常是不必要的,也不推荐这样做。)

自从:
1.4
参见:
  • 方法总结

    修饰符和类型
    方法
    描述
    boolean
    此方法由当前 KeyboardFocusManager 调用,请求此 KeyEventDispatcher 代表它调度指定的事件。
  • 方法详情

    • dispatchKeyEvent

      boolean dispatchKeyEvent(KeyEvent  e)
      此方法由当前 KeyboardFocusManager 调用,请求此 KeyEventDispatcher 代表它调度指定的事件。此 KeyEventDispatcher 可以自由地重新定位事件、使用它、自行分派它或进行其他更改。此功能通常用于将 KeyEvent 传递给焦点所有者以外的组件。例如,在可访问的环境中导航不可聚焦的 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
      返回:
      true 如果 KeyboardFocusManager 不应对 KeyEvent 采取进一步的行动; false否则
      参见: