Module java.desktop
Package java.awt

Interface KeyEventPostProcessor

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

@FunctionalInterface public interface KeyEventPostProcessor
KeyEventPostProcessor与当前KeyboardFocusManager合作,最终解决所有未消耗的KeyEvents。注册到当前KeyboardFocusManager的KeyEventPostProcessors将在KeyEvents被分派到其目标并被处理后接收KeyEvents。否则会被丢弃的KeyEvents,因为应用程序中当前没有组件拥有焦点,也将转发给注册的KeyEventPostProcessors。这将允许应用程序实现需要全局KeyEvent后处理的功能,例如菜单快捷键。

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

自从:
1.4
参见:
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    当前KeyboardFocusManager调用此方法,请求此KeyEventPostProcessor执行任何必要的后处理,这应该是KeyEvent最终解决方案的一部分。
  • Method Details

    • 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
      参见: