java.awt

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

public abstract class KeyboardFocusManager
     
extends Object
implements KeyEventDispatcher, KeyEventPostProcessor

KeyboardFocusManager 负责管理激活状态的聚焦 Window 和当前焦点所有者。焦点所有者的定义是:应用程序中的 Component,通常接收用户生成的所有 KeyEvent。聚焦 Window 指本身就是(或者包含)焦点所有者的 Window。只有 Frame 或 Dialog 才能成为活动 Window。本机的窗口操作系统可能使用特殊装饰(如高亮显示标题栏)来表示活动 Window 或其子窗口。活动 Window 要么是聚焦 Window,要么是作为聚焦 Window 所有者的第一个 Frame 或 Dialog。

KeyboardFocusManager 既是一个用于查询焦点所有者并启动焦点更改的客户端代码的集中位置,同时又是一个用于所有 FocusEvent、与焦点相关的 WindowEvent 和 KeyEvent 的调度程序。

有些浏览器将使用不同代码基数的 applet 划分为单独的上下文,并在这些上下文之间建墙分隔。在此方案中,每个上下文都将具有一个 KeyboardFocusManager。其他浏览器将所有 applet 置于同一个上下文中,这意味着仅存在一个用于所有 applet 的全局 KeyboardFocusManager。此行为是依赖于实现的。请参考浏览器文档以获取更多信息。然而,不管可能有多少上下文,每个 ClassLoader 的焦点所有者、聚焦 Window 或活动 Window 只能有一个。

请参见 How to Use the Focus SubsystemThe Java Tutorial 的一节)和 Focus Specification 以获取更多信息。

从以下版本开始:
1.4
另请参见:
Window, Frame, Dialog, FocusEvent, WindowEvent, KeyEvent

字段摘要
static int BACKWARD_TRAVERSAL_KEYS
          Backward 焦点遍历键的标识符。
static int DOWN_CYCLE_TRAVERSAL_KEYS
          Down Cycle 焦点遍历键的标识符。
static int FORWARD_TRAVERSAL_KEYS
          Forward 焦点遍历键的标识符。
static int UP_CYCLE_TRAVERSAL_KEYS
          Up Cycle 焦点遍历键的标识符。
 
构造方法摘要
KeyboardFocusManager()
          初始化 KeyboardFocusManager。
 
方法摘要
 void addKeyEventDispatcher(KeyEventDispatcher dispatcher)
          将 KeyEventDispatcher 添加到此 KeyboardFocusManager 的调度程序链中。
 void addKeyEventPostProcessor(KeyEventPostProcessor processor)
          将 KeyEventPostProcessor 添加到此 KeyboardFocusManager 的后处理器链中。
 void addPropertyChangeListener(PropertyChangeListener listener)
          将 PropertyChangeListener 添加到侦听器列表。
 void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
          将 PropertyChangeListener 添加到特定属性的侦听器列表。
 void addVetoableChangeListener(String propertyName, VetoableChangeListener listener)
          将 VetoableChangeListener 添加到特定属性的侦听器列表。
 void addVetoableChangeListener(VetoableChangeListener listener)
          将 VetoableChangeListener 添加到侦听器列表。
 void clearGlobalFocusOwner()
          在 Java 和本机级别清除全局焦点所有者。
protected abstract  void dequeueKeyEvents(long after, Component untilFocused)
          由 AWT 调用以通知 KeyboardFocusManager 应该取消延迟指派 KeyEvent。
protected abstract  void discardKeyEvents(Component comp)
          由 AWT 调用以通知 KeyboardFocusManager 应该取消延迟指派 KeyEvent。
abstract  boolean dispatchEvent(AWTEvent e)
          AWT 事件调度程序可以调用此方法,请求当前的 KeyboardFocusManager 为其指派指定的事件。
abstract  boolean dispatchKeyEvent(KeyEvent e)
          通常情况下,如果该指派程序链中的其他 KeyEventDispatcher 没有指派 KeyEvent 或者没有注册其他 KeyEventDispatcher,则 dispatchEvent 将调用此方法。
 void downFocusCycle()
          当且仅当当前焦点所有者是一个作为焦点循环根的 Container 时,从当前焦点所有者将焦点下移一个焦点遍历循环。
abstract  void downFocusCycle(Container aContainer)
          将焦点下移一个焦点遍历循环。
protected abstract  void enqueueKeyEvents(long after, Component untilFocused)
          在指定的 Component 成为焦点所有者以前由 AWT 调用,以通知 KeyboardFocusManager 延迟指派 KeyEvent。
protected  void firePropertyChange(String propertyName, Object oldValue, Object newValue)
          激发 PropertyChangeEvent 以响应绑定属性中的更改。
protected  void fireVetoableChange(String propertyName, Object oldValue, Object newValue)
          激发 PropertyChangeEvent 以响应可否决属性中的更改。
 void focusNextComponent()
          聚焦当前焦点所有者之后的 Component。
abstract  void focusNextComponent(Component aComponent)
          聚焦 aComponent 之后的 Component,通常基于 FocusTraversalPolicy。
 void focusPreviousComponent()
          聚焦当前焦点所有者之前的 Component。
abstract  void focusPreviousComponent(Component aComponent)
          聚焦 aComponent 之前的 Component,通常基于 FocusTraversalPolicy。
 Window getActiveWindow()
          如果活动 Window 与调用线程位于同一个上下文中,则返回活动 Window。
 Container getCurrentFocusCycleRoot()
          如果当前焦点循环根与调用线程位于相同的上下文中,则返回当前焦点循环根。
static KeyboardFocusManager getCurrentKeyboardFocusManager()
          返回调用线程上下文的当前 KeyboardFocusManager 实例。
 Set<AWTKeyStroke> getDefaultFocusTraversalKeys(int id)
          返回给定遍历操作的默认焦点遍历键的 Set。
 FocusTraversalPolicy getDefaultFocusTraversalPolicy()
          返回默认 FocusTraversalPolicy。
 Window getFocusedWindow()
          如果聚焦窗口与调用线程位于同一个上下文中,则返回聚焦窗口。
 Component getFocusOwner()
          如果焦点所有者与调用线程位于同一个上下文中,则返回该焦点所有者。
protected  Window getGlobalActiveWindow()
          返回活动 Window,即使调用线程处于活动 Window 之外的上下文中。
protected  Container getGlobalCurrentFocusCycleRoot()
          返回当前焦点循环根,即使调用线程处于当前焦点循环根之外的上下文中。
protected  Window getGlobalFocusedWindow()
          返回聚焦 Window,即使调用线程处于聚焦 Window 之外的上下文中。
protected  Component getGlobalFocusOwner()
          返回焦点所有者,即使调用线程处于焦点所有者之外的上下文中。
protected  Component getGlobalPermanentFocusOwner()
          返回持久焦点所有者,即使调用线程处于该持久焦点所有者之外的上下文中。
protected  List<KeyEventDispatcher> getKeyEventDispatchers()
          作为 List 返回此 KeyboardFocusManager 的 KeyEventDispatcher 链。
protected  List<KeyEventPostProcessor> getKeyEventPostProcessors()
          作为 List 返回此 KeyboardFocusManager 的 KeyEventPostProcessor 链。
 Component getPermanentFocusOwner()
          如果持久焦点所有者与调用线程位于同一个上下文中,则返回持久焦点所有者。
 PropertyChangeListener[] getPropertyChangeListeners()
          返回在此键盘焦点管理器上注册的所有属性更改侦听器组成的数组。
 PropertyChangeListener[] getPropertyChangeListeners(String propertyName)
          返回与指定属性相关联的所有 PropertyChangeListener 组成的数组。
 VetoableChangeListener[] getVetoableChangeListeners()
          返回在此键盘焦点管理器上注册的所有可否决更改侦听器组成的数组。
 VetoableChangeListener[] getVetoableChangeListeners(String propertyName)
          返回与指定属性相关联的所有 VetoableChangeListener 组成的数组。
abstract  boolean postProcessKeyEvent(KeyEvent e)
          dispatchKeyEvent 将调用此方法。
abstract  void processKeyEvent(Component focusedComponent, KeyEvent e)
          当且仅当该 KeyEvent 表示指定 focusedComponent 的焦点遍历键时,此方法启动焦点遍历操作。
 void redispatchEvent(Component target, AWTEvent e)
          重新指派 AWTEvent 的方式是,AWT 事件调度程序不会递归式请求 KeyboardFocusManager 或任何已安装的 KeyEventDispatcher 再次指派该事件。
 void removeKeyEventDispatcher(KeyEventDispatcher dispatcher)
          移除以前添加到此 KeyboardFocusManager 调度程序链中的 KeyEventDispatcher。
 void removeKeyEventPostProcessor(KeyEventPostProcessor processor)
          从此 KeyboardFocusManager 的后处理器链中移除以前添加的 KeyEventPostProcessor。
 void removePropertyChangeListener(PropertyChangeListener listener)
          从侦听器列表移除 PropertyChangeListener。
 void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
          从特定属性的侦听器列表移除 PropertyChangeListener。
 void removeVetoableChangeListener(String propertyName, VetoableChangeListener listener)
          从特定属性的侦听器列表移除 VetoableChangeListener。
 void removeVetoableChangeListener(VetoableChangeListener listener)
          从侦听器列表移除 VetoableChangeListener。
static void setCurrentKeyboardFocusManager(KeyboardFocusManager newManager)
          设置调用线程上下文的当前 KeyboardFocusManager 实例。
 void setDefaultFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes)
          设置给定遍历操作的默认焦点遍历键。
 void setDefaultFocusTraversalPolicy(FocusTraversalPolicy defaultPolicy)
          设置默认 FocusTraversalPolicy。
protected  void setGlobalActiveWindow(Window activeWindow)
          设置活动 Window。
 void setGlobalCurrentFocusCycleRoot(Container newFocusCycleRoot)
          设置当前焦点循环根。
protected  void setGlobalFocusedWindow(Window focusedWindow)
          设置聚焦 Window。
protected  void setGlobalFocusOwner(Component focusOwner)
          设置焦点所有者。
protected  void setGlobalPermanentFocusOwner(Component permanentFocusOwner)
          设置持久焦点所有者。
 void upFocusCycle()
          从当前焦点所有者将焦点上移一个焦点遍历循环。
abstract  void upFocusCycle(Component aComponent)
          将焦点上移一个焦点遍历循环。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

FORWARD_TRAVERSAL_KEYS

public static final int FORWARD_TRAVERSAL_KEYS
Forward 焦点遍历键的标识符。

另请参见:
setDefaultFocusTraversalKeys(int, java.util.Set ), getDefaultFocusTraversalKeys(int), Component.setFocusTraversalKeys(int, java.util.Set ), Component.getFocusTraversalKeys(int), 常量字段值

BACKWARD_TRAVERSAL_KEYS

public static final int BACKWARD_TRAVERSAL_KEYS
Backward 焦点遍历键的标识符。

另请参见:
setDefaultFocusTraversalKeys(int, java.util.Set ), getDefaultFocusTraversalKeys(int), Component.setFocusTraversalKeys(int, java.util.Set ), Component.getFocusTraversalKeys(int), 常量字段值

UP_CYCLE_TRAVERSAL_KEYS

public static final int UP_CYCLE_TRAVERSAL_KEYS
Up Cycle 焦点遍历键的标识符。

另请参见:
setDefaultFocusTraversalKeys(int, java.util.Set ), getDefaultFocusTraversalKeys(int), Component.setFocusTraversalKeys(int, java.util.Set ), Component.getFocusTraversalKeys(int), 常量字段值

DOWN_CYCLE_TRAVERSAL_KEYS

public static final int DOWN_CYCLE_TRAVERSAL_KEYS
Down Cycle 焦点遍历键的标识符。

另请参见:
setDefaultFocusTraversalKeys(int, java.util.Set ), getDefaultFocusTraversalKeys(int), Component.setFocusTraversalKeys(int, java.util.Set ), Component.getFocusTraversalKeys(int), 常量字段值
构造方法详细信息

KeyboardFocusManager

public KeyboardFocusManager()
初始化 KeyboardFocusManager。

方法详细信息

getCurrentKeyboardFocusManager

public static KeyboardFocusManager getCurrentKeyboardFocusManager()
返回调用线程上下文的当前 KeyboardFocusManager 实例。

返回:
此线程上下文的 KeyboardFocusManager
另请参见:
setCurrentKeyboardFocusManager(java.awt.KeyboardFocusManager)

setCurrentKeyboardFocusManager

public static void setCurrentKeyboardFocusManager(KeyboardFocusManager newManager)
                                           throws SecurityException
设置调用线程上下文的当前 KeyboardFocusManager 实例。如果指定了 null,则使用 DefaultKeyboardFocusManager 的新实例替换当前 KeyboardFocusManager。

如果安装了 SecurityManager,则必须授予调用线程 AWTPermission "replaceKeyboardFocusManager" 才能替换当前 KeyboardFocusManager。如果未授予该权限,则此方法将抛出 SecurityException,而当前的 KeyboardFocusManager 不会改变。

参数:
newManager - 此线程上下文的新 KeyboardFocusManager
抛出:
SecurityException - 如果调用线程不具有替换当前 KeyboardFocusManager 的权限
另请参见:
getCurrentKeyboardFocusManager(), DefaultKeyboardFocusManager

getFocusOwner

public Component getFocusOwner()
如果焦点所有者与调用线程位于同一个上下文中,则返回该焦点所有者。焦点所有者的定义是:应用程序中的 Component,通常用户生成的所有 KeyEvent 都被接收。如果为焦点所有者启用了焦点遍历键,则不会传递映射到焦点所有者的焦点遍历键的 KeyEvent。此外,KeyEventDispatcher 在到达焦点所有者之前可能重定向或使用 KeyEvent。

返回:
焦点所有者;如果焦点所有者调用的不是线程上下文的成员,则返回 null
另请参见:
getGlobalFocusOwner(), setGlobalFocusOwner(java.awt.Component)

getGlobalFocusOwner

protected Component getGlobalFocusOwner()
                                 throws SecurityException
返回焦点所有者,即使调用线程处于焦点所有者之外的上下文中。焦点所有者的定义是:应用程序中的 Component,通常接收用户生成的所有 KeyEvent。如果为焦点所有者启用了焦点遍历键,则不会传递映射到焦点所有者的焦点遍历键的 KeyEvent。此外,KeyEventDispatcher 在到达焦点所有者之前可能重定向或使用 KeyEvent。

如果此 KeyboardFocusManager 调用的不是线程上下文的当前 KeyboardFocusManager,则此方法将抛出 SecurityException。

返回:
焦点所有者
抛出:
SecurityException - 如果此 KeyboardFocusManager 调用的不是线程上下文的当前 KeyboardFocusManager
另请参见:
getFocusOwner(), setGlobalFocusOwner(java.awt.Component)

setGlobalFocusOwner

protected void setGlobalFocusOwner(Component focusOwner)
设置焦点所有者。如果该 Component 不可以作为焦点,则取消操作。焦点所有者的定义是:应用程序中的 Component,通常接收用户生成的所有 KeyEvent。如果为焦点所有者启用了焦点遍历键,则不会传递映射到焦点所有者的焦点遍历键的 KeyEvent。此外,KeyEventDispatcher 在到达焦点所有者之前可能重定向或使用 KeyEvent。

此方法实际上没有将焦点设置为指定的 Component。它只存储该值,以便以后由 getFocusOwner() 返回它。更改焦点所有者需要使用 Component.requestFocus()Component.requestFocusInWindow(),具体的使用因平台而异。

参数:
focusOwner - 焦点所有者
另请参见:
getFocusOwner(), getGlobalFocusOwner(), Component.requestFocus(), Component.requestFocusInWindow(), Component.isFocusable()

clearGlobalFocusOwner

public void clearGlobalFocusOwner()
在 Java 和本机级别清除全局焦点所有者。如果存在焦点所有者,则该 Component 将接收持久 FOCUS_LOST 事件。完成此操作后,在用户选择接收焦点的新 Component 或通过调用 requestFocus() 为 Component 显式分配焦点之前,本机窗口操作系统将放弃所有用户生成的 KeyEvent。此操作不改变聚焦或激活状态的 Window。

另请参见:
Component.requestFocus(), FocusEvent.FOCUS_LOST

getPermanentFocusOwner

public Component getPermanentFocusOwner()
如果持久焦点所有者与调用线程位于同一个上下文中,则返回持久焦点所有者。持久焦点所有者的定义是:应用程序中的最后一个 Component,它可以接收持久 FOCUS_GAINED 事件。如果不发生临时焦点更改,则焦点所有者和持久焦点所有者是等效的。在发生临时焦点更改的情形下,临时焦点更改结束后,持久焦点所有者又会变成焦点所有者。

返回:
持久焦点所有者;如果持久焦点所有者调用的不是线程上下文的成员,则返回 null
另请参见:
getGlobalPermanentFocusOwner(), setGlobalPermanentFocusOwner(java.awt.Component)

getGlobalPermanentFocusOwner

protected Component getGlobalPermanentFocusOwner()
                                          throws SecurityException
返回持久焦点所有者,即使调用线程处于该持久焦点所有者之外的上下文中。持久焦点所有者的定义是:应用程序中的最后一个 Component,它可以接收持久 FOCUS_GAINED 事件。如果不发生临时焦点更改,则焦点所有者和持久焦点所有者是等效的。在发生临时焦点更改的情形下,临时焦点更改结束后,持久焦点所有者又会变成焦点所有者。

如果此 KeyboardFocusManager 调用的不是线程上下文的当前 KeyboardFocusManager,则此方法将抛出 SecurityException。

返回:
持久焦点所有者
抛出:
SecurityException - 如果此 KeyboardFocusManager 调用的不是线程上下文的当前 KeyboardFocusManager
另请参见:
getPermanentFocusOwner(), setGlobalPermanentFocusOwner(java.awt.Component)

setGlobalPermanentFocusOwner

protected void setGlobalPermanentFocusOwner(Component permanentFocusOwner)
设置持久焦点所有者。如果该 Component 不可以作为焦点,则取消该操作。持久焦点所有者的定义是:应用程序中的最后一个 Component,它可以接收持久 FOCUS_GAINED 事件。如果不发生临时焦点更改,则焦点所有者和持久焦点所有者是等效的。在发生临时焦点更改的情形下,临时焦点更改结束后,持久焦点所有者又会变成焦点所有者。

此方法实际上没有将焦点设置为指定的 Component。它只存储该值,以便以后由 getPermanentFocusOwner() 返回它。更改焦点所有者需要使用 Component.requestFocus()Component.requestFocusInWindow(),因平台而异。

参数:
permanentFocusOwner - 持久焦点所有者
另请参见:
getPermanentFocusOwner(), getGlobalPermanentFocusOwner(), Component.requestFocus(), Component.requestFocusInWindow(), Component.isFocusable()

getFocusedWindow

public Window getFocusedWindow()
如果聚焦窗口与调用线程位于同一个上下文中,则返回聚焦窗口。聚焦 Window 指本身就是(或者包含)焦点所有者的 Window。

返回:
聚焦 Window;如果聚焦 Window 调用的不是线程上下文的成员,则返回 null
另请参见:
getGlobalFocusedWindow(), setGlobalFocusedWindow(java.awt.Window)

getGlobalFocusedWindow

protected Window getGlobalFocusedWindow()
                                 throws SecurityException
返回聚焦 Window,即使调用线程处于聚焦 Window 之外的上下文中。聚焦 Window 指本身就是(或者包含)焦点所有者的 Window。

如果此 KeyboardFocusManager 调用的不是线程上下文的当前 KeyboardFocusManager,则此方法将抛出 SecurityException。

返回:
聚焦 Window
抛出:
SecurityException - 如果此 KeyboardFocusManager 调用的不是线程上下文的当前 KeyboardFocusManager
另请参见:
getFocusedWindow(), setGlobalFocusedWindow(java.awt.Window)

setGlobalFocusedWindow

protected void setGlobalFocusedWindow(Window focusedWindow)
设置聚焦 Window。聚焦 Window 指本身就是(或者包含)焦点所有者的 Window。如果要聚焦的指定 Window 不是可以作为焦点的 Window,则取消该操作。

此方法不能实际更改与本机窗口操作系统相关的聚焦 Window。它只存储该值,以便以后由 getFocusedWindow() 返回它。更改聚焦 Window 需要使用 Component.requestFocus()Component.requestFocusInWindow(),因平台而异。

参数:
focusedWindow - 聚焦 Window
另请参见:
getFocusedWindow(), getGlobalFocusedWindow(), Component.requestFocus()