java.lang.Object java.awt.KeyboardFocusManager java.awt.DefaultKeyboardFocusManager
public class DefaultKeyboardFocusManager
AWT 应用程序的默认 KeyboardFocusManager。通过进行焦点遍历来响应 Component 的焦点遍历键,并使用 Container 的 FocusTraversalPolicy。
有关更多信息,请参阅 The Java Tutorial 中的 How to Use the Focus Subsystem 一节以及 Focus Specification。
FocusTraversalPolicy
,
Component.setFocusTraversalKeys(int, java.util.Set
)
,
Component.getFocusTraversalKeys(int)
字段摘要 |
---|
从类 java.awt.KeyboardFocusManager 继承的字段 |
---|
BACKWARD_TRAVERSAL_KEYS, DOWN_CYCLE_TRAVERSAL_KEYS, FORWARD_TRAVERSAL_KEYS, UP_CYCLE_TRAVERSAL_KEYS |
构造方法摘要 | |
---|---|
DefaultKeyboardFocusManager() |
方法摘要 | |
---|---|
protected void |
dequeueKeyEvents(long after, Component untilFocused) 释放正常指派到当前焦点所有者的所有 KeyEvent,这些 KeyEvent 因为调用了具有相同时间戳和 Component 的 enqueueKeyEvents 而被加入队列。 |
protected void |
discardKeyEvents(Component comp) 放弃因为一次或多次调用具有指定 Component 或其子代之一的 enqueueKeyEvents 而加入队列的所有 KeyEvent。 |
boolean |
dispatchEvent(AWTEvent e) 此方法由 AWT 事件调度程序调用,该调度程序请求当前的 KeyboardFocusManager 以它的名义指派指定的事件。 |
boolean |
dispatchKeyEvent(KeyEvent e) 如果调度程序链中其他 KeyEventDispatcher 都没有调度 KeyEvent,或者没有注册其他 KeyEventDispatcher,则由 dispatchEvent 调用此方法。 |
void |
downFocusCycle(Container aContainer) 将焦点下移一个焦点遍历循环。 |
protected void |
enqueueKeyEvents(long after, Component untilFocused) 延迟对 KeyEvent 的指派,直到指定的 Component 成为焦点所有者。 |
void |
focusNextComponent(Component aComponent) 使 aComponent 后面的 Component 拥有焦点,通常基于 FocusTraversalPolicy。 |
void |
focusPreviousComponent(Component aComponent) 使 aComponent 前面的 Component 拥有焦点,通常基于 FocusTraversalPolicy。 |
boolean |
postProcessKeyEvent(KeyEvent e) 由 dispatchKeyEvent 调用此方法。 |
void |
processKeyEvent(Component focusedComponent, KeyEvent e) 当且仅当该 KeyEvent 表示指定 focusedComponent 的焦点遍历键时,此方法才会启动一个焦点遍历操作。 |
void |
upFocusCycle(Component aComponent) 将焦点上移一个焦点遍历循环。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public DefaultKeyboardFocusManager()
方法详细信息 |
---|
public boolean dispatchEvent(AWTEvent e)
false
,则 AWT 事件调度程序会试着指派事件本身。
KeyboardFocusManager
中的
dispatchEvent
e
- 要指派的 AWTEvent
true
;否则返回
false
KeyboardFocusManager.redispatchEvent(java.awt.Component, java.awt.AWTEvent)
,
KeyboardFocusManager.dispatchKeyEvent(java.awt.event.KeyEvent)
public boolean dispatchKeyEvent(KeyEvent e)
dispatchEvent
调用此方法。如果没有使用该事件,而是启用了它的目标,且焦点所有者不为 null,则此方法会将该事件指派到它的目标。此方法随后会将该事件指派到所有已注册的 KeyEventPostProcessor。完成所有这些操作之后,会将该事件传递给 KeyEventPostProcessor 的同位体进行处理。
在所有情况下,此方法都将返回 true
,这是因为设计了 DefaultKeyboardFocusManager,因此,在任何情况下,dispatchEvent
和 AWT 事件调度程序都不应该对该事件执行进一步的操作。
KeyEventDispatcher
中的
dispatchKeyEvent
KeyboardFocusManager
中的
dispatchKeyEvent
e
- 要指派的 KeyEvent
true
Component.dispatchEvent(java.awt.AWTEvent)
public boolean postProcessKeyEvent(KeyEvent e)
dispatchKeyEvent
调用此方法。它将处理所有未使用的、映射到 AWT
MenuShortcut
的 KeyEvent,这是通过使用该事件并激活快捷方式来实现的。
KeyEventPostProcessor
中的
postProcessKeyEvent
KeyboardFocusManager
中的
postProcessKeyEvent
e
- 要进行后处理的 KeyEvent
true
dispatchKeyEvent(java.awt.event.KeyEvent)
,
MenuShortcut
public void processKeyEvent(Component focusedComponent, KeyEvent e)
KeyboardFocusManager
中的
processKeyEvent
focusedComponent
- 作为焦点遍历操作的基础的 Component,如果指定事件表示 Component 的焦点遍历键,则执行焦点遍历操作
e
- 可以表示焦点遍历键的事件
protected void enqueueKeyEvents(long after, Component untilFocused)
dequeueKeyEvents
或
discardKeyEvents
取消延迟请求。
KeyboardFocusManager
中的
enqueueKeyEvents
after
- 当前事件的时间戳,如果当前事件没有时间戳,或 AWT 无法确定当前正在处理哪个事件,则此参数为当前系统时间
untilFocused
- 将接收任何挂起 KeyEvent 之前的 FOCUS_GAINED 事件的 Component
dequeueKeyEvents(long, java.awt.Component)
,
discardKeyEvents(java.awt.Component)
protected void dequeueKeyEvents(long after, Component untilFocused)
enqueueKeyEvents
而被加入队列。如果给定的时间戳小于零,那么对于具有
最早的时间戳(如果有)的给定 Component,应该取消未完成的入队请求。
KeyboardFocusManager
中的
dequeueKeyEvents
after
- 调用
enqueueKeyEvents
期间指定的时间戳,或为小于零的任意值
untilFocused
- 调用
enqueueKeyEvents
期间指定的 Component
enqueueKeyEvents(long, java.awt.Component)
,
discardKeyEvents(java.awt.Component)
protected void discardKeyEvents(Component comp)
enqueueKeyEvents
而加入队列的所有 KeyEvent。
KeyboardFocusManager
中的
discardKeyEvents
comp
- 一次或多次调用
enqueueKeyEvents
期间指定的 Component,或这样一个 Component 的父组件
enqueueKeyEvents(long, java.awt.Component)
,
dequeueKeyEvents(long, java.awt.Component)
public void focusPreviousComponent(Component aComponent)
KeyboardFocusManager
中的
focusPreviousComponent
aComponent
- 作为焦点遍历操作的基础的 Component
FocusTraversalPolicy
,
Component.transferFocusBackward()
public void focusNextComponent(Component aComponent)
KeyboardFocusManager
中的
focusNextComponent
aComponent
- 作为焦点遍历操作的基础的 Component
FocusTraversalPolicy
,
Component.transferFocus()
public void upFocusCycle(Component aComponent)
KeyboardFocusManager
中的
upFocusCycle
aComponent
- 作为焦点遍历操作的基础的 Component
Component.transferFocusUpCycle()
public void downFocusCycle(Container aContainer)
KeyboardFocusManager
中的
downFocusCycle
aContainer
- 作为焦点遍历操作的基础的 Component
Container.transferFocusDownCycle()