模块 java.desktop
 java.awt

接口 KeyEventPostProcessor

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

@FunctionalInterface public interface KeyEventPostProcessor
KeyEventPostProcessor 与当前的 KeyboardFocusManager 合作,最终解决所有未使用的 KeyEvent。向当前 KeyboardFocusManager 注册的 KeyEventPostProcessors 将在 KeyEvents 被调度到它们的目标并由其处理后接收 KeyEvents。由于当前应用程序中没有组件拥有焦点而被丢弃的 KeyEvents 也将被转发到已注册的 KeyEventPostProcessors。这将允许应用程序实现需要全局 KeyEvent 后处理的功能,例如菜单快捷方式。

请注意,KeyboardFocusManager 本身实现了 KeyEventPostProcessor。默认情况下,当前的 KeyboardFocusManager 将是链中的最后一个 KeyEventPostProcessor。当前的 KeyboardFocusManager 不能作为 KeyEventPostProcessor 完全注销。但是,如果 KeyEventPostProcessor 报告不应对 KeyEvent 进行进一步的后处理,则 AWT 将认为该事件已完全处理,并且不会对该事件采取任何其他操作。 (虽然客户端代码可以将当前的 KeyboardFocusManager 注册为 KeyEventPostProcessor 一次或多次,但这通常是不必要的,也不推荐这样做。)

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

    修饰符和类型
    方法
    描述
    boolean
    此方法由当前的 KeyboardFocusManager 调用,请求此 KeyEventPostProcessor 执行任何必要的后处理,这应该是 KeyEvent 最终解决方案的一部分。
  • 方法详情

    • postProcessKeyEvent

      boolean postProcessKeyEvent(KeyEvent  e)
      此方法由当前的 KeyboardFocusManager 调用,请求此 KeyEventPostProcessor 执行任何必要的后处理,这应该是 KeyEvent 最终解决方案的一部分。在调用此方法时,通常 KeyEvent 已被分派到其目标并由其处理。但是,如果应用程序中没有组件当前拥有焦点,则 KeyEvent 尚未分派给任何组件。通常,KeyEvent 后处理将用于实现需要全局 KeyEvent 后处理的功能,例如菜单快捷方式。请注意,如果 KeyEventPostProcessor 希望分派 KeyEvent,它必须使用 redispatchEvent 来防止 AWT 递归请求此 KeyEventPostProcessor 再次执行事件的后处理。

      如果此方法的实现返回 false ,则 KeyEvent 将传递到链中的下一个 KeyEventPostProcessor,以当前的 KeyboardFocusManager 结束。如果实现返回 true ,则假定 KeyEvent 已完全处理(尽管情况不一定如此),并且 AWT 将不会对该 KeyEvent 采取进一步的操作。如果某个实现使用了 KeyEvent 但返回了 false ,则使用的事件仍将传递到链中的下一个 KeyEventPostProcessor。对于开发人员来说,在执行任何 KeyEvent 的后处理之前检查 KeyEvent 是否已经被消费是很重要的。默认情况下,当前的 KeyboardFocusManager 将不执行任何后处理以响应消耗的 KeyEvent。

      参数:
      e - 要后处理的 KeyEvent
      返回:
      true 如果 AWT 不应对 KeyEvent 采取进一步的行动; false否则
      参见: