-
- Functional Interface:
- 这是一个功能接口,因此可以用作lambda表达式或方法引用的赋值目标。
@FunctionalInterfacepublic interface KeyEventPostProcessor
KeyEventPostProcessor与当前KeyboardFocusManager在所有未使用的KeyEvent的最终解析中协作。 在KeyEvents被调度到目标并由其处理之后,使用当前KeyboardFocusManager注册的KeyEventPostProcessors将接收KeyEvent。 由于应用程序当前没有组件当前拥有焦点而原本会被丢弃的KeyEvent也将被转发到已注册的KeyEventPostProcessors。 这将允许应用程序实现需要全局KeyEvent后处理的功能,例如菜单快捷方式。请注意,KeyboardFocusManager本身实现了KeyEventPostProcessor。 默认情况下,当前的KeyboardFocusManager将是链中的最终KeyEventPostProcessor。 当前的KeyboardFocusManager无法完全取消注册为KeyEventPostProcessor。 但是,如果KeyEventPostProcessor报告不应对KeyEvent进行进一步的后处理,则AWT将认为该事件已完全处理,并且不会对该事件采取任何其他操作。 (虽然客户端代码可以将当前的KeyboardFocusManager作为KeyEventPostProcessor注册一次或多次,但这通常是不必要的,不推荐使用。)
-
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 boolean
postProcessKeyEvent(KeyEvent e)
当前的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
- 另请参见:
-
KeyboardFocusManager.redispatchEvent(java.awt.Component, java.awt.AWTEvent)
-
-