-
- Functional Interface:
- 这是一个功能接口,因此可以用作lambda表达式或方法引用的赋值目标。
@FunctionalInterfacepublic interface KeyEventDispatcher
KeyEventDispatcher与当前的KeyboardFocusManager合作,用于定位和分派所有KeyEvent。 使用当前KeyboardFocusManager注册的KeyEventDispatcher将在将它们分派到目标之前接收KeyEvent,从而允许每个KeyEventDispatcher重新定位事件,使用它,调度事件本身或进行其他更改。请注意,KeyboardFocusManager本身实现了KeyEventDispatcher。 默认情况下,当前的KeyboardFocusManager将是已注册的KeyEventDispatcher未调度的所有KeyEvent的接收器。 当前的KeyboardFocusManager无法完全取消注册为KeyEventDispatcher。 但是,如果KeyEventDispatcher报告它调度了KeyEvent,无论它是否实际执行了此操作,KeyboardFocusManager都不会对KeyEvent采取进一步操作。 (虽然客户端代码可以将当前的KeyboardFocusManager作为KeyEventDispatcher注册一次或多次,但这通常是不必要的,不推荐使用。)
-
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 boolean
dispatchKeyEvent(KeyEvent e)
当前的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分配给目标之前检查KeyEvent是否已被消耗是很重要的。 默认情况下,当前的KeyboardFocusManager不会调度消耗的KeyEvent。- 参数
-
e
- 要发送的KeyEvent - 结果
-
true
如果KeyboardFocusManager不应该对KeyEvent采取进一步的行动; 否则为false
- 另请参见:
-
KeyboardFocusManager.redispatchEvent(java.awt.Component, java.awt.AWTEvent)
-
-