- 功能接口:
- 这是一个功能接口,因此可以用作lambda表达式或方法引用的赋值目标。
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 TypeMethodDescriptionboolean
当前KeyboardFocusManager调用此方法,请求此KeyEventPostProcessor执行任何必要的后处理,这应该是KeyEvent最终解决方案的一部分。
-
Method Details
-
postProcessKeyEvent
当前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
- 参见:
-