java.lang.Objectjava.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()