java.lang.Object java.awt.KeyboardFocusManager
public abstract class KeyboardFocusManager
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 Subsystem(The Java Tutorial 的一节)和 Focus Specification 以获取更多信息。
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 |
字段详细信息 |
---|
public static final int FORWARD_TRAVERSAL_KEYS
public static final int BACKWARD_TRAVERSAL_KEYS
public static final int UP_CYCLE_TRAVERSAL_KEYS
public static final int DOWN_CYCLE_TRAVERSAL_KEYS
构造方法详细信息 |
---|
public KeyboardFocusManager()
方法详细信息 |
---|
public static KeyboardFocusManager getCurrentKeyboardFocusManager()
setCurrentKeyboardFocusManager(java.awt.KeyboardFocusManager)
public static void setCurrentKeyboardFocusManager(KeyboardFocusManager newManager) throws SecurityException
如果安装了 SecurityManager,则必须授予调用线程 AWTPermission "replaceKeyboardFocusManager" 才能替换当前 KeyboardFocusManager。如果未授予该权限,则此方法将抛出 SecurityException,而当前的 KeyboardFocusManager 不会改变。
newManager
- 此线程上下文的新 KeyboardFocusManager
SecurityException
- 如果调用线程不具有替换当前 KeyboardFocusManager 的权限
getCurrentKeyboardFocusManager()
,
DefaultKeyboardFocusManager
public Component getFocusOwner()
getGlobalFocusOwner()
,
setGlobalFocusOwner(java.awt.Component)
protected Component getGlobalFocusOwner() throws SecurityException
如果此 KeyboardFocusManager 调用的不是线程上下文的当前 KeyboardFocusManager,则此方法将抛出 SecurityException。
SecurityException
- 如果此 KeyboardFocusManager 调用的不是线程上下文的当前 KeyboardFocusManager
getFocusOwner()
,
setGlobalFocusOwner(java.awt.Component)
protected void setGlobalFocusOwner(Component focusOwner)
此方法实际上没有将焦点设置为指定的 Component。它只存储该值,以便以后由 getFocusOwner()
返回它。更改焦点所有者需要使用 Component.requestFocus()
或 Component.requestFocusInWindow()
,具体的使用因平台而异。
focusOwner
- 焦点所有者
getFocusOwner()
,
getGlobalFocusOwner()
,
Component.requestFocus()
,
Component.requestFocusInWindow()
,
Component.isFocusable()
public void clearGlobalFocusOwner()
requestFocus()
为 Component 显式分配焦点之前,本机窗口操作系统将放弃所有用户生成的 KeyEvent。此操作不改变聚焦或激活状态的 Window。
public Component getPermanentFocusOwner()
getGlobalPermanentFocusOwner()
,
setGlobalPermanentFocusOwner(java.awt.Component)
protected Component getGlobalPermanentFocusOwner() throws SecurityException
如果此 KeyboardFocusManager 调用的不是线程上下文的当前 KeyboardFocusManager,则此方法将抛出 SecurityException。
SecurityException
- 如果此 KeyboardFocusManager 调用的不是线程上下文的当前 KeyboardFocusManager
getPermanentFocusOwner()
,
setGlobalPermanentFocusOwner(java.awt.Component)
protected void setGlobalPermanentFocusOwner(Component permanentFocusOwner)
此方法实际上没有将焦点设置为指定的 Component。它只存储该值,以便以后由 getPermanentFocusOwner()
返回它。更改焦点所有者需要使用 Component.requestFocus()
或 Component.requestFocusInWindow()
,因平台而异。
permanentFocusOwner
- 持久焦点所有者
getPermanentFocusOwner()
,
getGlobalPermanentFocusOwner()
,
Component.requestFocus()
,
Component.requestFocusInWindow()
,
Component.isFocusable()
public Window getFocusedWindow()
getGlobalFocusedWindow()
,
setGlobalFocusedWindow(java.awt.Window)
protected Window getGlobalFocusedWindow() throws SecurityException
如果此 KeyboardFocusManager 调用的不是线程上下文的当前 KeyboardFocusManager,则此方法将抛出 SecurityException。
SecurityException
- 如果此 KeyboardFocusManager 调用的不是线程上下文的当前 KeyboardFocusManager
getFocusedWindow()
,
setGlobalFocusedWindow(java.awt.Window)
protected void setGlobalFocusedWindow(Window focusedWindow)
此方法不能实际更改与本机窗口操作系统相关的聚焦 Window。它只存储该值,以便以后由 getFocusedWindow()
返回它。更改聚焦 Window 需要使用 Component.requestFocus()
或 Component.requestFocusInWindow()
,因平台而异。
focusedWindow
- 聚焦 Window
getFocusedWindow()
,
getGlobalFocusedWindow()
,
Component.requestFocus()