JavaTM Platform
Standard Ed. 6

java.awt
类 DefaultKeyboardFocusManager

java.lang.Object
  继承者 java.awt.KeyboardFocusManager
      继承者 java.awt.DefaultKeyboardFocusManager
所有已实现的接口:
KeyEventDispatcher, KeyEventPostProcessor
直接已知子类:
FocusManager

public class DefaultKeyboardFocusManager
extends KeyboardFocusManager

AWT 应用程序的默认 KeyboardFocusManager。通过进行焦点遍历来响应 Component 的焦点遍历键,并使用 Container 的 FocusTraversalPolicy。

有关更多信息,请参阅 The Java Tutorial 中的 How to Use the Focus Subsystem 一节以及 Focus Specification

从以下版本开始:
1.4
另请参见:
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.awt.KeyboardFocusManager 继承的方法
addKeyEventDispatcher, addKeyEventPostProcessor, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, addVetoableChangeListener, clearGlobalFocusOwner, downFocusCycle, firePropertyChange, fireVetoableChange, focusNextComponent, focusPreviousComponent, getActiveWindow, getCurrentFocusCycleRoot, getCurrentKeyboardFocusManager, getDefaultFocusTraversalKeys, getDefaultFocusTraversalPolicy, getFocusedWindow, getFocusOwner, getGlobalActiveWindow, getGlobalCurrentFocusCycleRoot, getGlobalFocusedWindow, getGlobalFocusOwner, getGlobalPermanentFocusOwner, getKeyEventDispatchers, getKeyEventPostProcessors, getPermanentFocusOwner, getPropertyChangeListeners, getPropertyChangeListeners, getVetoableChangeListeners, getVetoableChangeListeners, redispatchEvent, removeKeyEventDispatcher, removeKeyEventPostProcessor, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, removeVetoableChangeListener, setCurrentKeyboardFocusManager, setDefaultFocusTraversalKeys, setDefaultFocusTraversalPolicy, setGlobalActiveWindow, setGlobalCurrentFocusCycleRoot, setGlobalFocusedWindow, setGlobalFocusOwner, setGlobalPermanentFocusOwner, upFocusCycle
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

DefaultKeyboardFocusManager

public DefaultKeyboardFocusManager()
方法详细信息

dispatchEvent

public boolean dispatchEvent(AWTEvent e)
此方法由 AWT 事件调度程序调用,该调度程序请求当前的 KeyboardFocusManager 以它的名义指派指定的事件。DefaultKeyboardFocusManagers 指派所有 FocusEvents、所有与焦点有关的 WindowEvents 和所有 KeyEvents。根据 KeyboardFocusManager 的焦点所有者、聚焦的窗口和活动窗口的概念来指派这些事件,有时需要重写指定 AWTEvent 的源代码。如果此方法返回 false,则 AWT 事件调度程序会试着指派事件本身。

指定者:
KeyboardFocusManager 中的 dispatchEvent
参数:
e - 要指派的 AWTEvent
返回:
如果此方法指派了事件,则返回 true;否则返回 false
另请参见:
KeyboardFocusManager.redispatchEvent(java.awt.Component, java.awt.AWTEvent), KeyboardFocusManager.dispatchKeyEvent(java.awt.event.KeyEvent)

dispatchKeyEvent

public boolean dispatchKeyEvent(KeyEvent e)
如果调度程序链中其他 KeyEventDispatcher 都没有调度 KeyEvent,或者没有注册其他 KeyEventDispatcher,则由 dispatchEvent 调用此方法。如果没有使用该事件,而是启用了它的目标,且焦点所有者不为 null,则此方法会将该事件指派到它的目标。此方法随后会将该事件指派到所有已注册的 KeyEventPostProcessor。完成所有这些操作之后,会将该事件传递给 KeyEventPostProcessor 的同位体进行处理。

在所有情况下,此方法都将返回 true,这是因为设计了 DefaultKeyboardFocusManager,因此,在任何情况下,dispatchEvent 和 AWT 事件调度程序都不应该对该事件执行进一步的操作。

指定者:
接口 KeyEventDispatcher 中的 dispatchKeyEvent
指定者:
KeyboardFocusManager 中的 dispatchKeyEvent
参数:
e - 要指派的 KeyEvent
返回:
true
另请参见:
Component.dispatchEvent(java.awt.AWTEvent)

postProcessKeyEvent

public boolean postProcessKeyEvent(KeyEvent e)
dispatchKeyEvent 调用此方法。它将处理所有未使用的、映射到 AWT MenuShortcut 的 KeyEvent,这是通过使用该事件并激活快捷方式来实现的。

指定者:
接口 KeyEventPostProcessor 中的 postProcessKeyEvent
指定者:
KeyboardFocusManager 中的 postProcessKeyEvent
参数:
e - 要进行后处理的 KeyEvent
返回:
true
另请参见:
dispatchKeyEvent(java.awt.event.KeyEvent), MenuShortcut

processKeyEvent

public void processKeyEvent(Component focusedComponent,
                            KeyEvent e)
当且仅当该 KeyEvent 表示指定 focusedComponent 的焦点遍历键时,此方法才会启动一个焦点遍历操作。期望 focusedComponent 就是当前的焦点所有者,虽然事实不必如此。如果事实并非如此,则仍然要进行焦点遍历,就像 focusedComponent 是焦点所有者一样。

指定者:
KeyboardFocusManager 中的 processKeyEvent
参数:
focusedComponent - 作为焦点遍历操作的基础的 Component,如果指定事件表示 Component 的焦点遍历键,则执行焦点遍历操作
e - 可以表示焦点遍历键的事件

enqueueKeyEvents

protected void enqueueKeyEvents(long after,
                                Component untilFocused)
延迟对 KeyEvent 的指派,直到指定的 Component 成为焦点所有者。将时间戳迟于指定时间戳的 KeyEvent 加入队列,直到指定的 Component 接收一个 FOCUS_GAINED 事件,或者 AWT 通过调用 dequeueKeyEventsdiscardKeyEvents 取消延迟请求。

指定者:
KeyboardFocusManager 中的 enqueueKeyEvents
参数:
after - 当前事件的时间戳,如果当前事件没有时间戳,或 AWT 无法确定当前正在处理哪个事件,则此参数为当前系统时间
untilFocused - 将接收任何挂起 KeyEvent 之前的 FOCUS_GAINED 事件的 Component
另请参见:
dequeueKeyEvents(long, java.awt.Component), discardKeyEvents(java.awt.Component)

dequeueKeyEvents

protected void dequeueKeyEvents(long after,
                                Component untilFocused)
释放正常指派到当前焦点所有者的所有 KeyEvent,这些 KeyEvent 因为调用了具有相同时间戳和 Component 的 enqueueKeyEvents 而被加入队列。如果给定的时间戳小于零,那么对于具有最早的时间戳(如果有)的给定 Component,应该取消未完成的入队请求。

指定者:
KeyboardFocusManager 中的 dequeueKeyEvents
参数:
after - 调用 enqueueKeyEvents 期间指定的时间戳,或为小于零的任意值
untilFocused - 调用 enqueueKeyEvents 期间指定的 Component
另请参见:
enqueueKeyEvents(long, java.awt.Component), discardKeyEvents(java.awt.Component)

discardKeyEvents

protected void discardKeyEvents(Component comp)
放弃因为一次或多次调用具有指定 Component 或其子代之一的 enqueueKeyEvents 而加入队列的所有 KeyEvent。

指定者:
KeyboardFocusManager 中的 discardKeyEvents
参数:
comp - 一次或多次调用 enqueueKeyEvents 期间指定的 Component,或这样一个 Component 的父组件
另请参见:
enqueueKeyEvents(long, java.awt.Component), dequeueKeyEvents(long, java.awt.Component)

focusPreviousComponent

public void focusPreviousComponent(Component aComponent)
使 aComponent 前面的 Component 拥有焦点,通常基于 FocusTraversalPolicy。

指定者:
KeyboardFocusManager 中的 focusPreviousComponent
参数:
aComponent - 作为焦点遍历操作的基础的 Component
另请参见:
FocusTraversalPolicy, Component.transferFocusBackward()

focusNextComponent

public void focusNextComponent(Component aComponent)
使 aComponent 后面的 Component 拥有焦点,通常基于 FocusTraversalPolicy。

指定者:
KeyboardFocusManager 中的 focusNextComponent
参数:
aComponent - 作为焦点遍历操作的基础的 Component
另请参见:
FocusTraversalPolicy, Component.transferFocus()

upFocusCycle

public void upFocusCycle(Component aComponent)
将焦点上移一个焦点遍历循环。通常,将焦点所有者设置为 aComponent 的焦点循环根,将当前的焦点循环根设置为新焦点所有者的焦点循环根。但是,如果 aComponent 的焦点循环根是一个 Window,则将焦点所有者设置为焦点循环根默认拥有焦点的 Component,当前的焦点循环根不变。

指定者:
KeyboardFocusManager 中的 upFocusCycle
参数:
aComponent - 作为焦点遍历操作的基础的 Component
另请参见:
Component.transferFocusUpCycle()

downFocusCycle

public void downFocusCycle(Container aContainer)
将焦点下移一个焦点遍历循环。如果 aContainer 是一个焦点循环根,则将焦点所有者设置为 aContainer 默认拥有焦点的 Component,并将当前的焦点循环根设置为 aContainer。如果 aContainer 不是一个焦点循环根,则不发生焦点遍历操作。

指定者:
KeyboardFocusManager 中的 downFocusCycle
参数:
aContainer - 作为焦点遍历操作的基础的 Component
另请参见:
Container.transferFocusDownCycle()

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策