- java.lang.Object
-
- java.awt.KeyboardFocusManager
-
- All Implemented Interfaces:
-
KeyEventDispatcher,KeyEventPostProcessor
- 已知直接子类:
-
DefaultKeyboardFocusManager
public abstract class KeyboardFocusManager extends Object implements KeyEventDispatcher, KeyEventPostProcessor
KeyboardFocusManager负责管理主动和关注的Windows以及当前焦点所有者。 焦点所有者被定义为通常将接收用户生成的所有KeyEvent的应用程序中的组件。 关注的窗口是焦点所有者的或包含焦点所有者的窗口。 只有框架或对话框可以是活动窗口。 本地窗口系统可以表示活动窗口或其具有特殊装饰的儿童,例如突出显示的标题栏。 活动窗口始终是聚焦的窗口,或者是聚焦窗口的所有者的第一个框架或对话框。KeyboardFocusManager是客户端代码查询焦点所有者并启动焦点更改的集中位置,以及所有FocusEvents,与焦点相关的WindowEvent和KeyEvents的事件调度程序。
一些浏览器将不同代码库中的小程序分割成单独的上下文,并在这些上下文之间建立墙壁。 在这种情况下,每个上下文将有一个KeyboardFocusManager。 其他浏览器将所有小程序放入相同的上下文中,这意味着所有小程序都将只有一个全局的KeyboardFocusManager。 这种行为是依赖于实现的。 有关更多信息,请参阅浏览器的文档。 不管有多少上下文可能存在,但是,根据ClassLoader,永远不会有多个焦点所有者,关注窗口或活动窗口。
请参阅How to Use the Focus Subsystem , Java教程中的一节,以及有关更多信息的Focus Specification 。
- 从以下版本开始:
- 1.4
- 另请参见:
-
Window,Frame,Dialog,FocusEvent,WindowEvent,KeyEvent
-
-
Field Summary
Fields Modifier and Type Field 描述 static intBACKWARD_TRAVERSAL_KEYS后向聚焦遍历键的标识符。static intDOWN_CYCLE_TRAVERSAL_KEYSDown Cycle的标识符聚焦遍历键。static intFORWARD_TRAVERSAL_KEYS正向聚焦遍历键的标识符。static intUP_CYCLE_TRAVERSAL_KEYS上传周期聚焦遍历键的标识符。
-
构造方法摘要
构造方法 Constructor 描述 KeyboardFocusManager()初始化KeyboardFocusManager。
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 voidaddKeyEventDispatcher(KeyEventDispatcher dispatcher)将KeyEventDispatcher添加到此KeyboardFocusManager的调度程序链中。voidaddKeyEventPostProcessor(KeyEventPostProcessor processor)将KeyEventPostProcessor添加到此KeyboardFocusManager的后处理器链。voidaddPropertyChangeListener(PropertyChangeListener listener)将PropertyChangeListener添加到侦听器列表。voidaddPropertyChangeListener(String propertyName, PropertyChangeListener listener)将PropertyChangeListener添加到特定属性的侦听器列表中。voidaddVetoableChangeListener(VetoableChangeListener listener)将VetoableChangeListener添加到侦听器列表。voidaddVetoableChangeListener(String propertyName, VetoableChangeListener listener)将VetoableChangeListener添加到特定属性的侦听器列表中。voidclearFocusOwner()如果焦点所有者存在并驻留在与调用线程相同的上下文中,则清除Java和本机级别的焦点所有者,否则该方法将静默返回。voidclearGlobalFocusOwner()在Java和本机级别清除全局焦点所有者。protected abstract voiddequeueKeyEvents(long after, Component untilFocused)由AWT调用以通知KeyboardFocusManager它应该取消KeyEvents的延迟调度。protected abstract voiddiscardKeyEvents(Component comp)由AWT调用以通知KeyboardFocusManager它应该取消KeyEvents的延迟调度。abstract booleandispatchEvent(AWTEvent e)该方法由AWT事件调度程序调用,请求当前的KeyboardFocusManager代表它发送指定的事件。abstract booleandispatchKeyEvent(KeyEvent e)通常,如果调度程序链中没有其他的KeyEventDispatcher调度了KeyEvent,或者没有其他的KeyEventDispatchers被注册,这个方法将被调用dispatchEvent。voiddownFocusCycle()当焦点所有者是当前焦点循环根的容器时,将焦点向下移动当前焦点所有者的一个焦点遍历循环。abstract voiddownFocusCycle(Container aContainer)将焦点向下移动一个焦点遍历周期。protected abstract voidenqueueKeyEvents(long after, Component untilFocused)由AWT调用,通知KeyboardFocusManager它应该延迟调度KeyEvents,直到指定的Component成为焦点所有者。protected voidfirePropertyChange(String propertyName, Object oldValue, Object newValue)触发PropertyChangeEvent以响应绑定属性的更改。protected voidfireVetoableChange(String propertyName, Object oldValue, Object newValue)触发PropertyChangeEvent以响应否决权属性的更改。voidfocusNextComponent()在当前焦点所有者之后聚焦组件。abstract voidfocusNextComponent(Component aComponent)将组件聚焦在aComponent之后,通常基于FocusTraversalPolicy。voidfocusPreviousComponent()将组件聚焦到当前焦点所有者之前。abstract voidfocusPreviousComponent(Component aComponent)在组件之前聚焦组件,通常基于FocusTraversalPolicy。WindowgetActiveWindow()如果活动窗口与调用线程处于相同的上下文中,则返回活动窗口。ContainergetCurrentFocusCycleRoot()如果当前焦点循环根与调用线程处于相同的上下文中,则返回当前焦点循环根。static KeyboardFocusManagergetCurrentKeyboardFocusManager()返回调用线程上下文的当前KeyboardFocusManager实例。Set<AWTKeyStroke>getDefaultFocusTraversalKeys(int id)返回给定遍历操作的一组默认焦点遍历键。FocusTraversalPolicygetDefaultFocusTraversalPolicy()返回默认的FocusTraversalPolicy。WindowgetFocusedWindow()如果集中的窗口与调用线程处于相同的上下文中,则返回关注的窗口。ComponentgetFocusOwner()如果焦点所有者与调用线程处于相同的上下文中,则返回焦点所有者。protected WindowgetGlobalActiveWindow()返回活动窗口,即使调用线程与活动窗口处于不同的上下文中。protected ContainergetGlobalCurrentFocusCycleRoot()返回当前焦点循环根,即使调用线程与当前焦点循环根不同。protected WindowgetGlobalFocusedWindow()返回聚焦窗口,即使调用线程与聚焦窗口处于不同的上下文中。protected ComponentgetGlobalFocusOwner()即使调用线程与焦点所有者的上下文不同,返回焦点所有者。protected ComponentgetGlobalPermanentFocusOwner()返回永久焦点所有者,即使调用线程与永久焦点所有者处于不同的上下文中。protected List<KeyEventDispatcher>getKeyEventDispatchers()将此KeyboardFocusManager的KeyEventDispatcher链作为列表返回。protected List<KeyEventPostProcessor>getKeyEventPostProcessors()将此KeyboardFocusManager的KeyEventPostProcessor链返回为列表。ComponentgetPermanentFocusOwner()如果永久焦点所有者与调用线程处于相同的上下文中,则返回永久焦点所有者。PropertyChangeListener[]getPropertyChangeListeners()返回在此键盘焦点管理器上注册的所有属性更改侦听器的数组。PropertyChangeListener[]getPropertyChangeListeners(String propertyName)返回与named属性相关联的所有PropertyChangeListener的数组。VetoableChangeListener[]getVetoableChangeListeners()返回在此键盘焦点管理器上注册的所有否决变更监听器的数组。VetoableChangeListener[]getVetoableChangeListeners(String propertyName)返回与命名属性相关联的所有VetoableChangeListeners的数组。abstract booleanpostProcessKeyEvent(KeyEvent e)此方法将由dispatchKeyEvent。abstract voidprocessKeyEvent(Component focusedComponent, KeyEvent e)当且仅当KeyEvent表示指定的focusComponent的焦点遍历键时,此方法启动焦点遍历操作。voidredispatchEvent(Component target, AWTEvent e)重新分配AWTEvent,AWT事件调度程序将不会递归地请求KeyboardFocusManager或任何已安装的KeyEventDispatchers再次发送事件。voidremoveKeyEventDispatcher(KeyEventDispatcher dispatcher)删除之前添加到此KeyboardFocusManager调度程序链的KeyEventDispatcher。voidremoveKeyEventPostProcessor(KeyEventPostProcessor processor)从此KeyboardFocusManager的后处理器链中删除以前添加的KeyEventPostProcessor。voidremovePropertyChangeListener(PropertyChangeListener listener)从侦听器列表中移除PropertyChangeListener。voidremovePropertyChangeListener(String propertyName, PropertyChangeListener listener)从侦听器列表中为特定属性移除PropertyChangeListener。voidremoveVetoableChangeListener(VetoableChangeListener listener)从侦听器列表中删除VetoableChangeListener。voidremoveVetoableChangeListener(String propertyName, VetoableChangeListener listener)从侦听器列表中为特定属性删除VetoableChangeListener。static voidsetCurrentKeyboardFocusManager(KeyboardFocusManager newManager)为调用线程的上下文设置当前的KeyboardFocusManager实例。voidsetDefaultFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes)设置给定遍历操作的默认焦点遍历键。voidsetDefaultFocusTraversalPolicy(FocusTraversalPolicy defaultPolicy)设置默认的FocusTraversalPolicy。protected voidsetGlobalActiveWindow(Window activeWindow)设置活动窗口。voidsetGlobalCurrentFocusCycleRoot(Container newFocusCycleRoot)设置当前焦点循环根。protected voidsetGlobalFocusedWindow(Window focusedWindow)设置聚焦窗口。protected voidsetGlobalFocusOwner(Component focusOwner)设置焦点所有者。protected voidsetGlobalPermanentFocusOwner(Component permanentFocusOwner)设置永久焦点所有者。voidupFocusCycle()将焦点移动到当前焦点所有者的一个焦点遍历周期。abstract voidupFocusCycle(Component aComponent)将焦点移动到一个焦点遍历周期。
-
-
-
字段详细信息
-
FORWARD_TRAVERSAL_KEYS
public static final int FORWARD_TRAVERSAL_KEYS
正向聚焦遍历键的标识符。
-
BACKWARD_TRAVERSAL_KEYS
public static final int BACKWARD_TRAVERSAL_KEYS
后向聚焦遍历键的标识符。
-
UP_CYCLE_TRAVERSAL_KEYS
public static final int UP_CYCLE_TRAVERSAL_KEYS
上传周期聚焦遍历键的标识符。
-
DOWN_CYCLE_TRAVERSAL_KEYS
public static final int DOWN_CYCLE_TRAVERSAL_KEYS
Down Cycle的标识符聚焦遍历键。
-
-
方法详细信息
-
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()
如果焦点所有者与调用线程处于相同的上下文中,则返回焦点所有者。 焦点所有者被定义为通常将接收用户生成的所有KeyEvent的应用程序中的组件。 如果为焦点所有者启用了焦点遍历键,则映射到焦点所有者焦点遍历键的KeyEvent将不会被传送。 此外,KeyEventDispatchers可能会在到达焦点所有者之前重新定位或使用KeyEvent。- 结果
- 焦点所有者,如果焦点所有者不是调用线程的上下文的成员,则为null
- 另请参见:
-
getGlobalFocusOwner(),setGlobalFocusOwner(java.awt.Component)
-
getGlobalFocusOwner
protected Component getGlobalFocusOwner() throws SecurityException
即使调用线程与焦点所有者的上下文不同,返回焦点所有者。 焦点所有者被定义为通常将接收用户生成的所有KeyEvent的应用程序中的组件。 如果为焦点所有者启用了焦点遍历键,则映射到焦点所有者焦点遍历键的KeyEvent将不会被传送。 此外,KeyEventDispatchers可能会在到达焦点所有者之前重新定位或使用KeyEvent。如果此KeyboardFocusManager不是调用线程的上下文的当前KeyboardFocusManager,则此方法将抛出SecurityException。
- 结果
- 焦点所有者
- 异常
-
SecurityException- 如果此KeyboardFocusManager不是调用线程上下文的当前KeyboardFocusManager,并且调用线程没有“replaceKeyboardFocusManager”权限 - 另请参见:
-
getFocusOwner(),setGlobalFocusOwner(java.awt.Component)
-
setGlobalFocusOwner
protected void setGlobalFocusOwner(Component focusOwner) throws SecurityException
设置焦点所有者。 如果组件不可对焦,操作将被取消。 焦点所有者被定义为通常将接收用户生成的所有KeyEvent的应用程序中的组件。 如果为焦点所有者启用了焦点遍历键,则映射到焦点所有者焦点遍历键的KeyEvent将不会被传送。 此外,KeyEventDispatchers可能会在到达焦点所有者之前重新定位或使用KeyEvent。此方法实际上并没有将焦点设置为指定的组件。 它只存储
getFocusOwner()随后返回的getFocusOwner()。 使用Component.requestFocus()或Component.requestFocusInWindow()更改焦点所有者,受平台限制。- 参数
-
focusOwner- 焦点所有者 - 异常
-
SecurityException- 如果此KeyboardFocusManager不是调用线程上下文的当前KeyboardFocusManager,并且调用线程没有“replaceKeyboardFocusManager”权限 - 另请参见:
-
getFocusOwner(),getGlobalFocusOwner(),Component.requestFocus(),Component.requestFocusInWindow(),Component.isFocusable()
-
clearFocusOwner
public void clearFocusOwner()
如果焦点所有者存在并驻留在与调用线程相同的上下文中,则清除Java和本机级别的焦点所有者,否则该方法将静默返回。焦点所有者组件将收到一个永久的FOCUS_LOST事件。 此操作完成后,本机窗口系统将丢弃所有用户生成的密钥事件,直到用户选择一个新的组件来接收焦点,或者通过调用
requestFocus()明确指定了一个组件。 此操作不会更改聚焦或活动的Windows。- 从以下版本开始:
- 1.8
- 另请参见:
-
Component.requestFocus(),FocusEvent.FOCUS_LOST
-
clearGlobalFocusOwner
public void clearGlobalFocusOwner() throws SecurityException在Java和本机级别清除全局焦点所有者。 如果存在焦点所有者,该组件将收到一个永久的FOCUS_LOST事件。 完成此操作后,本机窗口系统将丢弃所有用户生成的KeyEvent,直到用户选择新的Component来接收焦点,或者通过调用requestFocus()明确指定了一个Component。 此操作不会更改聚焦或活动的Windows。如果安装了SecurityManager,则调用线程必须被授予“replaceKeyboardFocusManager”AWTPermission。 如果未授予此权限,则此方法将抛出SecurityException异常,并且不会清除当前焦点所有者。
此方法仅供KeyboardFocusManager设置为当前KeyboardFocusManager用于调用线程的上下文。 它不是一般客户使用。
- 异常
-
SecurityException- 如果调用线程没有“replaceKeyboardFocusManager”权限 - 另请参见:
-
clearFocusOwner(),Component.requestFocus(),FocusEvent.FOCUS_LOST
-
getPermanentFocusOwner
public Component getPermanentFocusOwner()
如果永久焦点所有者与调用线程处于相同的上下文中,则返回永久焦点所有者。 永久焦点所有者被定义为应用程序中接收永久FOCUS_GAINED事件的最后一个组件。 焦点所有者和永久焦点所有者是等效的,除非临时焦点更改目前有效。 在这种情况下,临时焦点变化结束时,永久性焦点所有者将再次成为焦点所有者。- 结果
- 永久焦点所有者,如果永久焦点所有者不是调用线程的上下文的成员,则为null
- 另请参见:
-
getGlobalPermanentFocusOwner(),setGlobalPermanentFocusOwner(java.awt.Component)
-
getGlobalPermanentFocusOwner
protected Component getGlobalPermanentFocusOwner() throws SecurityException
返回永久焦点所有者,即使调用线程与永久焦点所有者处于不同的上下文中。 永久焦点所有者被定义为应用程序中接收永久FOCUS_GAINED事件的最后一个组件。 焦点所有者和永久焦点所有者是等效的,除非临时焦点更改目前有效。 在这种情况下,临时焦点变化结束时,永久性焦点所有者将再次成为焦点所有者。- 结果
- 永久焦点所有者
- 异常
-
SecurityException- 如果此KeyboardFocusManager不是调用线程上下文的当前KeyboardFocusManager,并且调用线程没有“replaceKeyboardFocusManager”权限 - 另请参见:
-
getPermanentFocusOwner(),setGlobalPermanentFocusOwner(java.awt.Component)
-
setGlobalPermanentFocusOwner
protected void setGlobalPermanentFocusOwner(Component permanentFocusOwner) throws SecurityException
设置永久焦点所有者。 如果组件不可对焦,操作将被取消。 永久焦点所有者被定义为应用程序中接收永久FOCUS_GAINED事件的最后一个组件。 焦点所有者和永久焦点所有者是等效的,除非临时焦点更改目前有效。 在这种情况下,临时焦点变化结束时,永久性焦点所有者将再次成为焦点所有者。此方法实际上并没有将焦点设置为指定的组件。 它仅存储
getPermanentFocusOwner()后续返回的getPermanentFocusOwner()。 使用Component.requestFocus()或Component.requestFocusInWindow()更改焦点所有者,但受平台限制。- 参数
-
permanentFocusOwner- 永久焦点所有者 - 异常
-
SecurityException- 如果此KeyboardFocusManager不是调用线程上下文的当前KeyboardFocusManager,并且调用线程没有“replaceKeyboardFocusManager”权限 - 另请参见:
-
getPermanentFocusOwner(),getGlobalPermanentFocusOwner(),Component.requestFocus(),Component.requestFocusInWindow(),Component.isFocusable()
-
getFocusedWindow
public Window getFocusedWindow()
如果集中的窗口与调用线程处于相同的上下文中,则返回关注的窗口。 关注的窗口是包含焦点所有者的窗口。- 结果
- 关注的窗口,如果聚焦的窗口不是调用线程的上下文的成员,则为null
- 另请参见:
-
getGlobalFocusedWindow(),setGlobalFocusedWindow(java.awt.Window)
-
getGlobalFocusedWindow
protected Window getGlobalFocusedWindow() throws SecurityException
返回聚焦窗口,即使调用线程与聚焦窗口处于不同的上下文中。 关注的窗口是包含焦点所有者的窗口。- 结果
- 关注窗口
- 异常
-
SecurityException- 如果此KeyboardFocusManager不是调用线程上下文的当前KeyboardFocusManager,并且调用线程没有“replaceKeyboardFocusManager”权限 - 另请参见:
-
getFocusedWindow(),setGlobalFocusedWindow(java.awt.Window)
-
setGlobalFocusedWindow
protected void setGlobalFocusedWindow(Window focusedWindow) throws SecurityException
设置聚焦窗口。 关注的窗口是包含焦点所有者的窗口。 如果指定的对焦窗口不是可调焦窗口,则操作将被取消。就本地窗口系统而言,此方法实际上并没有改变关注窗口。 它仅存储
getFocusedWindow()后续返回的getFocusedWindow()。 使用Component.requestFocus()或Component.requestFocusInWindow()更改聚焦的窗口,受平台限制。- 参数
-
focusedWindow- 聚焦窗口 - 异常
-
SecurityException- 如果此KeyboardFocusManager不是调用线程上下文的当前KeyboardFocusManager,并且调用线程没有“replaceKeyboardFocusManager”权限 - 另请参见:
-
getFocusedWindow(),getGlobalFocusedWindow(),Component.requestFocus(),Component.requestFocusInWindow(),Window.isFocusableWindow()
-
getActiveWindow
public Window getActiveWindow()
如果活动窗口与调用线程处于相同的上下文中,则返回活动窗口。 只有框架或对话框可以是活动窗口。 本地窗口系统可以表示活动窗口或其具有特殊装饰的儿童,例如突出显示的标题栏。 活动窗口始终是聚焦的窗口,或者是聚焦窗口的所有者的第一个框架或对话框。- 结果
- 活动窗口,如果活动窗口不是调用线程的上下文的成员,则为null
- 另请参见:
-
getGlobalActiveWindow(),setGlobalActiveWindow(java.awt.Window)
-
getGlobalActiveWindow
protected Window getGlobalActiveWindow() throws SecurityException
返回活动窗口,即使调用线程与活动窗口处于不同的上下文中。 只有框架或对话框可以是活动窗口。 本地窗口系统可以表示活动窗口或其具有特殊装饰的儿童,例如突出显示的标题栏。 活动窗口始终是聚焦的窗口,或者是聚焦窗口的所有者的第一个框架或对话框。- 结果
- 活动窗口
- 异常
-
SecurityException- 如果此KeyboardFocusManager不是调用线程上下文的当前KeyboardFocusManager,并且调用线程没有“replaceKeyboardFocusManager”权限 - 另请参见:
-
getActiveWindow(),setGlobalActiveWindow(java.awt.Window)
-
setGlobalActiveWindow
protected void setGlobalActiveWindow(Window activeWindow) throws SecurityException
设置活动窗口。 只有框架或对话框可以是活动窗口。 本地窗口系统可以表示活动窗口或其具有特殊装饰的儿童,例如突出显示的标题栏。 活动窗口始终是聚焦的窗口,或者是聚焦窗口的所有者的第一个框架或对话框。就本地窗口系统而言,此方法实际上并不会更改活动窗口。 它仅存储
getActiveWindow()后续返回的getActiveWindow()。 使用Component.requestFocus()或Component.requestFocusInWindow()更改活动窗口,受平台限制。- 参数
-
activeWindow- 活动窗口 - 异常
-
SecurityException- 如果此KeyboardFocusManager不是调用线程上下文的当前KeyboardFocusManager,并且调用线程没有“replaceKeyboardFocusManager”权限 - 另请参见:
-
getActiveWindow(),getGlobalActiveWindow(),Component.requestFocus(),Component.requestFocusInWindow()
-
getDefaultFocusTraversalPolicy
public FocusTraversalPolicy getDefaultFocusTraversalPolicy()
返回默认的FocusTraversalPolicy。 顶级组件在创建时使用此值来通过显式调用Container.setFocusTraversalPolicy来初始化自己的焦点遍历策略。- 结果
- 默认的FocusTraversalPolicy。 将永远不会返回null。
- 另请参见:
-
setDefaultFocusTraversalPolicy(java.awt.FocusTraversalPolicy),Container.setFocusTraversalPolicy(java.awt.FocusTraversalPolicy),Container.getFocusTraversalPolicy()
-
setDefaultFocusTraversalPolicy
public void setDefaultFocusTraversalPolicy(FocusTraversalPolicy defaultPolicy)
设置默认的FocusTraversalPolicy。 顶级组件在创建时使用此值来通过显式调用Container.setFocusTraversalPolicy来初始化自己的焦点遍历策略。 注意:此调用不会影响已创建的组件,因为它们的策略已初始化。 只有新组件将使用此策略作为其默认策略。- 参数
-
defaultPolicy- 新的默认FocusTraversalPolicy - 异常
-
IllegalArgumentException- 如果defaultPolicy为空 - 另请参见:
-
getDefaultFocusTraversalPolicy(),Container.setFocusTraversalPolicy(java.awt.FocusTraversalPolicy),Container.getFocusTraversalPolicy()
-
setDefaultFocusTraversalKeys
public void setDefaultFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes)设置给定遍历操作的默认焦点遍历键。 这个遍历键Set将对所有没有自己明确定义的Set的所有Window都Window。 这个Set也将被那些没有自己明确定义的这样的Set的那些Windows的任何一个小孩Component递归地继承。默认焦点遍历键的默认值与实现相关。 Sun建议特定本地平台的所有实现使用相同的默认值。 Windows和Unix的建议如下。 这些建议用于Sun AWT实现。
Recommended default values for focus traversal keys Identifier Meaning DefaultKeyboardFocusManager.FORWARD_TRAVERSAL_KEYSNormal forward keyboard traversalTABonKEY_PRESSED,CTRL-TABonKEY_PRESSEDKeyboardFocusManager.BACKWARD_TRAVERSAL_KEYSNormal reverse keyboard traversalSHIFT-TABonKEY_PRESSED,CTRL-SHIFT-TABonKEY_PRESSEDKeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYSGo up one focus traversal cycle noneKeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYSGo down one focus traversal cycle none
要禁用遍历键,请使用空的Set; 推荐Collections.EMPTY_SET。使用
AWTKeyStrokeAPI,客户端代码可以指定在其上的两个特定KeyEventS,KEY_PRESSED或KEY_RELEASED,会发生焦点遍历操作。 但是,无论指定了哪个KeyEvent,所有KeyEvent与焦点遍历密钥相关的所有KeyEvent都将被使用,包括相关联的KEY_TYPED事件,并且不会发送到任何Component。 将KEY_TYPED事件指定为聚焦遍历操作,或者将相同的事件映射到多个默认焦点遍历操作是一个运行时错误。这种方法可能抛出
ClassCastException如有Object在keystrokes不是AWTKeyStroke。- 参数
-
id-一个KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS,或KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS -
keystrokes- 指定操作的AWTKeyStroke的集合 - 异常
-
IllegalArgumentException-如果ID是不是一个KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS,或KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS,或者击键为null,或者击键包含null,或者击键表示KEY_TYPED事件,或者击键已映射为别的默认焦点遍历操作 - 另请参见:
-
getDefaultFocusTraversalKeys(int),Component.setFocusTraversalKeys(int, java.util.Set<? extends java.awt.AWTKeyStroke>),Component.getFocusTraversalKeys(int)
-
getDefaultFocusTraversalKeys
public Set<AWTKeyStroke> getDefaultFocusTraversalKeys(int id)
返回给定遍历操作的一组默认焦点遍历键。 这个遍历密钥集将在所有没有自己显式定义的这样的组的Windows上生效。 该集合也将被那些没有自己明确定义的这样的组的那些Windows的任何子组件递归递归。 (有关各操作的完整说明,请参阅setDefaultFocusTraversalKeys)- 参数
-
id- KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS之一,KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS或KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS - 结果
-
Set的AWTKeyStrokes为指定的操作;Set将不可修改,可能为空; 将永远不会返回null - 异常
-
IllegalArgumentException- 如果id不是KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS或KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS中的一个 - 另请参见:
-
setDefaultFocusTraversalKeys(int, java.util.Set<? extends java.awt.AWTKeyStroke>),Component.setFocusTraversalKeys(int, java.util.Set<? extends java.awt.AWTKeyStroke>),Component.getFocusTraversalKeys(int)
-
getCurrentFocusCycleRoot
public Container getCurrentFocusCycleRoot()
如果当前焦点循环根与调用线程处于相同的上下文中,则返回当前焦点循环根。 如果焦点所有者本身是焦点循环根,那么对于哪些组件表示正常聚焦遍历期间要聚焦的下一个和以前的组件可能是不明确的。 在这种情况下,当前的焦点循环根用于区分可能性。此方法仅供KeyboardFocusManagers和焦点实施使用。 它不是一般客户使用。
- 结果
- 当前焦点循环根,如果当前焦点循环根不是调用线程的上下文的成员,则为null
- 另请参见:
-
getGlobalCurrentFocusCycleRoot(),setGlobalCurrentFocusCycleRoot(java.awt.Container)
-
getGlobalCurrentFocusCycleRoot
protected Container getGlobalCurrentFocusCycleRoot() throws SecurityException
返回当前焦点循环根,即使调用线程与当前焦点循环根不同。 如果焦点所有者本身是焦点循环根,那么对于哪些组件表示正常聚焦遍历期间要聚焦的下一个和以前的组件可能是不明确的。 在这种情况下,当前的焦点循环根用于区分可能性。- 结果
- 当前焦点循环根,如果当前焦点循环根不是调用线程的上下文的成员,则为null
- 异常
-
SecurityException- 如果此KeyboardFocusManager不是调用线程上下文的当前KeyboardFocusManager,并且调用线程没有“replaceKeyboardFocusManager”权限 - 另请参见:
-
getCurrentFocusCycleRoot(),setGlobalCurrentFocusCycleRoot(java.awt.Container)
-
setGlobalCurrentFocusCycleRoot
public void setGlobalCurrentFocusCycleRoot(Container newFocusCycleRoot) throws SecurityException
设置当前焦点循环根。 如果焦点所有者本身是焦点循环根,那么对于哪些组件表示正常聚焦遍历期间要聚焦的下一个和以前的组件可能是不明确的。 在这种情况下,当前的焦点循环根用于区分可能性。如果安装了SecurityManager,则调用线程必须被授予“replaceKeyboardFocusManager”AWTPermission。 如果未授予此权限,则此方法将抛出SecurityException,并且当前焦点循环根不会被更改。
此方法仅供KeyboardFocusManagers和焦点实施使用。 它不是一般客户使用。
- 参数
-
newFocusCycleRoot- 新的焦点循环根 - 异常
-
SecurityException- 如果调用线程没有“replaceKeyboardFocusManager”权限 - 另请参见:
-
getCurrentFocusCycleRoot(),getGlobalCurrentFocusCycleRoot()
-
addPropertyChangeListener
public void addPropertyChangeListener(PropertyChangeListener listener)
将PropertyChangeListener添加到侦听器列表。 监听器已注册到此类的所有绑定属性,包括以下内容:- KeyboardFocusManager是否正在管理此应用程序或小程序的浏览器上下文(“manageFocus”)的焦点
- 焦点所有者(“focusOwner”)
- 永久焦点所有者(“permanentFocusOwner”)
- 聚焦窗口(“focusedWindow”)
- 活动窗口(“activeWindow”)
- 默认焦点遍历策略(“defaultFocusTraversalPolicy”)
- 默认设置FORWARD_TRAVERSAL_KEYS(“forwardDefaultFocusTraversalKeys”)
- 默认设置BACKWARD_TRAVERSAL_KEYS(“backwardDefaultFocusTraversalKeys”)
- 默认设置UP_CYCLE_TRAVERSAL_KEYS(“upCycleDefaultFocusTraversalKeys”)
- 默认设置DOWN_CYCLE_TRAVERSAL_KEYS(“downCycleDefaultFocusTraversalKeys”)
- 当前焦点循环根(“currentFocusCycleRoot”)
- 参数
-
listener- 要添加的PropertyChangeListener - 另请参见:
-
removePropertyChangeListener(java.beans.PropertyChangeListener),getPropertyChangeListeners(),addPropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)
-
removePropertyChangeListener
public void removePropertyChangeListener(PropertyChangeListener listener)
从侦听器列表中移除PropertyChangeListener。 应该使用此方法来删除已为此类的所有绑定属性注册的PropertyChangeListeners。如果侦听器为空,则不会抛出异常,也不会执行任何操作。
- 参数
-
listener- 要删除的PropertyChangeListener - 另请参见:
-
addPropertyChangeListener(java.beans.PropertyChangeListener),getPropertyChangeListeners(),removePropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)
-
getPropertyChangeListeners
public PropertyChangeListener[] getPropertyChangeListeners()
返回在此键盘焦点管理器上注册的所有属性更改侦听器的数组。- 结果
-
所有这个键盘焦点经理的
PropertyChangeListeners或一个空数组,如果没有属性更改侦听器当前注册 - 从以下版本开始:
- 1.4
- 另请参见:
-
addPropertyChangeListener(java.beans.PropertyChangeListener),removePropertyChangeListener(java.beans.PropertyChangeListener),getPropertyChangeListeners(java.lang.String)
-
addPropertyChangeListener
public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
将PropertyChangeListener添加到特定属性的侦听器列表中。 指定的属性可能是用户定义的,也可能是以下之一:- KeyboardFocusManager是否正在管理此应用程序或小程序的浏览器上下文(“manageFocus”)的焦点
- 焦点所有者(“focusOwner”)
- 永久焦点所有者(“permanentFocusOwner”)
- 聚焦窗口(“focusedWindow”)
- 活动窗口(“activeWindow”)
- 默认焦点遍历策略(“defaultFocusTraversalPolicy”)
- 默认设置FORWARD_TRAVERSAL_KEYS(“forwardDefaultFocusTraversalKeys”)
- 默认设置BACKWARD_TRAVERSAL_KEYS(“backwardDefaultFocusTraversalKeys”)
- 默认设置UP_CYCLE_TRAVERSAL_KEYS(“upCycleDefaultFocusTraversalKeys”)
- 默认设置DOWN_CYCLE_TRAVERSAL_KEYS(“downCycleDefaultFocusTraversalKeys”)
- 当前焦点循环根(“currentFocusCycleRoot”)
- 参数
-
propertyName- 上面列出的属性名称之一 -
listener- 要添加的PropertyChangeListener - 另请参见:
-
addPropertyChangeListener(java.beans.PropertyChangeListener),removePropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener),getPropertyChangeListeners(java.lang.String)
-
removePropertyChangeListener
public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
从侦听器列表中为特定属性移除PropertyChangeListener。 应该使用此方法来删除为特定绑定属性注册的PropertyChangeListeners。如果侦听器为空,则不会抛出异常,也不会执行任何操作。
- 参数
-
propertyName- 有效的属性名称 -
listener- 要删除的PropertyChangeListener - 另请参见:
-
addPropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener),getPropertyChangeListeners(java.lang.String),removePropertyChangeListener(java.beans.PropertyChangeListener)
-
getPropertyChangeListeners
public PropertyChangeListener[] getPropertyChangeListeners(String propertyName)
返回与named属性相关联的所有PropertyChangeListener的数组。- 参数
-
propertyName- 属性名称 - 结果
-
所有
PropertyChangeListener与命名属性相关联,如果没有添加此类侦听器,则为空数组。 - 从以下版本开始:
- 1.4
- 另请参见:
-
addPropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener),removePropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)
-
firePropertyChange
protected void firePropertyChange(String propertyName, Object oldValue, Object newValue)
触发PropertyChangeEvent以响应绑定属性的更改。 该事件将传递给所有注册的PropertyChangeListeners。 如果oldValue和newValue相同,则不会传递任何事件。- 参数
-
propertyName- 已更改的属性的名称 -
oldValue- 该物业的以前的价值 -
newValue- 该物业的新值
-
addVetoableChangeListener
public void addVetoableChangeListener(VetoableChangeListener listener)
将VetoableChangeListener添加到侦听器列表。 监听器已注册该类的所有可判定属性,包括以下内容:- 焦点所有者(“focusOwner”)
- 永久焦点所有者(“permanentFocusOwner”)
- 聚焦窗口(“focusedWindow”)
- 活动窗口(“activeWindow”)
- 参数
-
listener- 要添加的VetoableChangeListener - 另请参见:
-
removeVetoableChangeListener(java.beans.VetoableChangeListener),getVetoableChangeListeners(),addVetoableChangeListener(java.lang.String,java.beans.VetoableChangeListener)
-
removeVetoableChangeListener
public void removeVetoableChangeListener(VetoableChangeListener listener)
从侦听器列表中删除VetoableChangeListener。 应该使用此方法来删除已为此类的所有可移动属性注册的VetoableChangeListeners。如果侦听器为空,则不会抛出异常,也不会执行任何操作。
- 参数
-
listener- 要删除的VetoableChangeListener - 另请参见:
-
addVetoableChangeListener(java.beans.VetoableChangeListener),getVetoableChangeListeners(),removeVetoableChangeListener(java.lang.String,java.beans.VetoableChangeListener)
-
getVetoableChangeListeners
public VetoableChangeListener[] getVetoableChangeListeners()
返回在此键盘焦点管理器上注册的所有否决变更监听器的数组。- 结果
-
所有这个键盘焦点经理的
VetoableChangeListeners或一个空数组,如果没有否决权变更听众当前注册 - 从以下版本开始:
- 1.4
- 另请参见:
-
addVetoableChangeListener(java.beans.VetoableChangeListener),removeVetoableChangeListener(java.beans.VetoableChangeListener),getVetoableChangeListeners(java.lang.String)
-
addVetoableChangeListener
public void addVetoableChangeListener(String propertyName, VetoableChangeListener listener)
将VetoableChangeListener添加到特定属性的侦听器列表中。 指定的属性可能是用户定义的,也可能是以下之一:- 焦点所有者(“focusOwner”)
- 永久焦点所有者(“permanentFocusOwner”)
- 聚焦窗口(“focusedWindow”)
- 活动窗口(“activeWindow”)
- 参数
-
propertyName- 上面列出的属性名称之一 -
listener- 要添加的VetoableChangeListener - 另请参见:
-
addVetoableChangeListener(java.beans.VetoableChangeListener),removeVetoableChangeListener(java.beans.VetoableChangeListener),getVetoableChangeListeners()
-
removeVetoableChangeListener
public void removeVetoableChangeListener(String propertyName, VetoableChangeListener listener)
从侦听器列表中为特定属性删除VetoableChangeListener。 该方法应用于删除已注册为特定绑定属性的VetoableChangeListeners。如果侦听器为空,则不会抛出异常,也不会执行任何操作。
- 参数
-
propertyName- 有效的属性名称 -
listener- 要删除的VetoableChangeListener - 另请参见:
-
addVetoableChangeListener(java.beans.VetoableChangeListener),getVetoableChangeListeners(),removeVetoableChangeListener(java.beans.VetoableChangeListener)
-
getVetoableChangeListeners
public VetoableChangeListener[] getVetoableChangeListeners(String propertyName)
返回与命名属性相关联的所有VetoableChangeListener的数组。- 参数
-
propertyName- 属性名称 - 结果
-
所有
VetoableChangeListener与命名属性相关联,如果没有添加此类侦听器,则为空数组。 - 从以下版本开始:
- 1.4
- 另请参见:
-
addVetoableChangeListener(java.lang.String,java.beans.VetoableChangeListener),removeVetoableChangeListener(java.lang.String,java.beans.VetoableChangeListener),getVetoableChangeListeners()
-
fireVetoableChange
protected void fireVetoableChange(String propertyName, Object oldValue, Object newValue) throws PropertyVetoException
触发PropertyChangeEvent以响应否决权属性的更改。 该事件将交付给所有注册的VetoableChangeListeners。 如果VetoableChangeListener抛出PropertyVetoException,则会触发一个新事件,将所有VetoableChangeListener还原为旧值,然后重新引导异常。 如果oldValue和newValue相同,则不会传递任何事件。- 参数
-
propertyName- 已更改的属性的名称 -
oldValue- 该物业的以前的价值 -
newValue- 该物业的新价值 - 异常
-
PropertyVetoException- 如果一个VetoableChangeListener投掷PropertyVetoException
-
addKeyEventDispatcher
public void addKeyEventDispatcher(KeyEventDispatcher dispatcher)
将KeyEventDispatcher添加到此KeyboardFocusManager的调度程序链中。 此KeyboardFocusManager将请求每个KeyEventDispatcher调度由用户生成的KeyEvents,然后最终分派KeyEvent本身。 KeyEventDispatchers将按照添加的顺序进行通知。 一旦KeyEventDispatcher从其dispatchKeyEvent方法返回true,通知将停止。 对于可以添加的KeyEventDispatchers的总数以及可以添加特定的KeyEventDispatcher实例的次数没有限制。如果指定了空调度器,则不会执行任何操作,也不会抛出任何异常。
在多线程应用程序中,
KeyEventDispatcher的行为与其他AWT侦听器相同。 详见AWT Threading Issues 。- 参数
-
dispatcher- 要添加到调度程序链的KeyEventDispatcher - 另请参见:
-
removeKeyEventDispatcher(java.awt.KeyEventDispatcher)
-
removeKeyEventDispatcher
public void removeKeyEventDispatcher(KeyEventDispatcher dispatcher)
删除之前添加到此KeyboardFocusManager调度程序链的KeyEventDispatcher。 此KeyboardFocusManager本身不能被删除,除非通过调用addKeyEventDispatcher显式重新注册。如果指定了一个空调度器,如果指定的调度程序不在调度程序链中,或者如果在未明确重新注册的情况下指定了此KeyboardFocusManager,则不会执行任何操作,也不会引发异常。
在多线程应用程序中,
KeyEventDispatcher的行为与其他AWT侦听器相同。 详见AWT Threading Issues 。- 参数
-
dispatcher- 要从调度程序链中删除的KeyEventDispatcher - 另请参见:
-
addKeyEventDispatcher(java.awt.KeyEventDispatcher)
-
getKeyEventDispatchers
protected List<KeyEventDispatcher> getKeyEventDispatchers()
将此KeyboardFocusManager的KeyEventDispatcher链作为列表返回。 该列表将不包括此KeyboardFocusManager,除非通过调用addKeyEventDispatcher显式重新注册。 如果没有其他的KeyEventDispatchers被注册,实现可以自由地返回null或一个长度为0的列表。客户端代码不应该假定一个行为超过另一个,也不应该假定一旦建立的行为将不会改变。- 结果
- 可能为空或空的KeyEventDispatchers列表
- 另请参见:
-
addKeyEventDispatcher(java.awt.KeyEventDispatcher),removeKeyEventDispatcher(java.awt.KeyEventDispatcher)
-
addKeyEventPostProcessor
public void addKeyEventPostProcessor(KeyEventPostProcessor processor)
将KeyEventPostProcessor添加到此KeyboardFocusManager的后处理器链。 在KeyEvent已经被派发到目标的目标之后,KeyboardFocusManager将要求每个KeyEventPostProcessor执行任何必要的后期处理,作为KeyEvent的最终解决方案的一部分。 KeyEventPostProcessors将按照添加的顺序进行通知; 当前的KeyboardFocusManager最后会被通知。 一旦KeyEventPostProcessor从其postProcessKeyEvent方法返回true,通知将停止。 对于可以添加的KeyEventPostProcessors的总数以及可以添加特定的KeyEventPostProcessor实例的次数没有限制。如果指定了空的后处理器,则不会采取任何操作,也不会抛出任何异常。
在多线程应用程序中,
KeyEventPostProcessor与其他AWT侦听器的行为相同。 详见AWT Threading Issues 。- 参数
-
processor- 要添加到后处理器链的KeyEventPostProcessor - 另请参见:
-
removeKeyEventPostProcessor(java.awt.KeyEventPostProcessor)
-
removeKeyEventPostProcessor
public void removeKeyEventPostProcessor(KeyEventPostProcessor processor)
从此KeyboardFocusManager的后处理器链中删除以前添加的KeyEventPostProcessor。 这个KeyboardFocusManager本身不能从链中完全删除。 只有通过addKeyEventPostProcessor添加的其他参考文献可以被删除。如果指定了空的后处理器,如果指定的后处理器不在后处理器链中,或者如果未指定此KeyboardFocusManager,而不显式添加,则不会执行任何操作,也不会抛出任何异常。
在多线程应用程序中,
KeyEventPostProcessor的行为与其他AWT侦听器相同。 有关详细信息,请参阅AWT Threading Issues 。- 参数
-
processor- 从后处理器链中删除的KeyEventPostProcessor - 另请参见:
-
addKeyEventPostProcessor(java.awt.KeyEventPostProcessor)
-
getKeyEventPostProcessors
protected List<KeyEventPostProcessor> getKeyEventPostProcessors()
将此KeyboardFocusManager的KeyEventPostProcessor链返回为列表。 该列表将不包括此KeyboardFocusManager,除非通过调用显式添加到addKeyEventPostProcessor。 如果没有注册KeyEventPostProcessors,实现可以返回null或者一个长度为0的列表。客户端代码不应该假定一个行为超过另一个,也不应该假定一旦建立的行为将不会改变。- 结果
- 可能为空或空的KeyEventPostProcessors列表
- 另请参见:
-
addKeyEventPostProcessor(java.awt.KeyEventPostProcessor),removeKeyEventPostProcessor(java.awt.KeyEventPostProcessor)
-
dispatchEvent
public abstract boolean dispatchEvent(AWTEvent e)
该方法由AWT事件调度程序调用,请求当前的KeyboardFocusManager代表它发送指定的事件。 预计所有的KeyboardFocusManagers将派发所有FocusEvents,所有与焦点相关的WindowEvent和所有KeyEvents。 这些事件应该基于KeyboardFocusManager对焦点所有者和聚焦和活动Windows的概念进行调度,有时覆盖指定的AWTEvent的源。 必须使用redispatchEvent进行调度,以防止AWT事件调度程序递归地请求KeyboardFocusManager再次分派事件。 如果此方法返回false,则AWT事件调度程序将尝试调度事件本身。- 参数
-
e- 要发送的AWTEvent - 结果
-
true如果此方法调度事件;false否则 - 另请参见:
-
redispatchEvent(java.awt.Component, java.awt.AWTEvent),dispatchKeyEvent(java.awt.event.KeyEvent)
-
redispatchEvent
public final void redispatchEvent(Component target, AWTEvent e)
重新分配AWTEvent,AWT事件调度程序将不会递归地请求KeyboardFocusManager或任何已安装的KeyEventDispatchers再次发送事件。dispatchEvent和客户端定义的KeyEventDispatchers的客户端实现必须调用redispatchEvent(target, e)而不是target.dispatchEvent(e)来调度事件。此方法仅供KeyboardFocusManagers和KeyEventDispatchers使用。 它不是一般客户使用。
- 参数
-
target- 事件应分发到的组件 -
e- 发送事件 - 另请参见:
-
dispatchEvent(java.awt.AWTEvent),KeyEventDispatcher
-
dispatchKeyEvent
public abstract boolean dispatchKeyEvent(KeyEvent e)
通常,如果调度程序链中没有其他的KeyEventDispatcher调度了KeyEvent,或者没有其他的KeyEventDispatchers被注册,这个方法将被调用dispatchEvent。 如果此方法的实现返回false,则dispatchEvent可能会尝试发送KeyEvent本身,或者可以简单地返回false。 如果true返回,dispatchEvent应该返回true为好。- Specified by:
-
dispatchKeyEvent在接口KeyEventDispatcher - 参数
-
e- 当前KeyboardFocusManager请求此KeyEventDispatcher调度的KeyEvent - 结果
-
true如果发送了KeyEvent;false否则 - 另请参见:
-
dispatchEvent(java.awt.AWTEvent)
-
postProcessKeyEvent
public abstract boolean postProcessKeyEvent(KeyEvent e)
此方法将由dispatchKeyEvent。 默认情况下,此方法将通过消耗事件并激活快捷方式来处理映射到AWTMenuShortcut的任何未消息的KeyEvent。- Specified by:
-
postProcessKeyEvent在接口KeyEventPostProcessor - 参数
-
e- 后期处理的KeyEvent - 结果
-
true表示没有其他的KeyEventPostProcessor将被通知KeyEvent。 - 另请参见:
-
dispatchKeyEvent(java.awt.event.KeyEvent),MenuShortcut
-
processKeyEvent
public abstract void processKeyEvent(Component focusedComponent, KeyEvent e)
当且仅当KeyEvent表示指定的focusComponent的焦点遍历键时,此方法启动焦点遍历操作。 预计focusComponent是当前的焦点所有者,尽管不一定是这样。 如果不是,聚焦遍历将继续进行,就像focusedComponent是当前焦点所有者一样。- 参数
-
focusedComponent- 如果指定的事件表示组件的聚焦遍历键,则该组件将成为聚焦遍历操作的基础 -
e- 可能代表焦点遍历键的事件
-
enqueueKeyEvents
protected abstract void enqueueKeyEvents(long after, Component untilFocused)由AWT调用,通知KeyboardFocusManager它应该延迟调度KeyEvents,直到指定的Component成为焦点所有者。 如果客户端代码请求焦点更改,并且AWT确定此请求可能由本机窗口系统授予,则AWT将调用此方法。 KeyboardFocusManager有责任延迟时间戳晚于指定时间戳的KeyEvents调度,直到指定的组件收到FOCUS_GAINED事件为止,或AWT通过调用dequeueKeyEvents或discardKeyEvents取消延迟请求。- 参数
-
after- 当前事件的时间戳或当前事件没有时间戳的当前系统时间,或者AWT无法确定当前处理的事件 -
untilFocused- 应该在任何待处理的KeyEvent之前收到FOCUS_GAINED事件的组件 - 另请参见:
-
dequeueKeyEvents(long, java.awt.Component),discardKeyEvents(java.awt.Component)
-
dequeueKeyEvents
protected abstract void dequeueKeyEvents(long after, Component untilFocused)由AWT调用以通知KeyboardFocusManager它应该取消KeyEvents的延迟调度。 由于调用enqueueKeyEvents具有相同时间戳和组件而排队的所有KeyEvent都应该被释放,以便正常发送到当前焦点所有者。 如果给定的时间戳小于零,则应取消给具有最早时间戳(如果有)的给定组件的未完成的入队请求。- 参数
-
after- 在调用enqueueKeyEvents指定的时间戳,或任何值<0 -
untilFocused- 在调用enqueueKeyEvents指定的组件 - 另请参见:
-
enqueueKeyEvents(long, java.awt.Component),discardKeyEvents(java.awt.Component)
-
discardKeyEvents
protected abstract void discardKeyEvents(Component comp)
由AWT调用以通知KeyboardFocusManager它应该取消KeyEvents的延迟调度。 由于对同一个组件的一个或多个调用enqueueKeyEvents所有KeyEvent都应该被丢弃。- 参数
-
comp- 在一个或多个调用enqueueKeyEvents指定的组件 - 另请参见:
-
enqueueKeyEvents(long, java.awt.Component),dequeueKeyEvents(long, java.awt.Component)
-
focusNextComponent
public abstract void focusNextComponent(Component aComponent)
将组件聚焦在aComponent之后,通常基于FocusTraversalPolicy。- 参数
-
aComponent- 作为焦点遍历操作的基础的组件 - 另请参见:
-
FocusTraversalPolicy
-
focusPreviousComponent
public abstract void focusPreviousComponent(Component aComponent)
在组件之前聚焦组件,通常基于FocusTraversalPolicy。- 参数
-
aComponent- 作为焦点遍历操作的基础的组件 - 另请参见:
-
FocusTraversalPolicy
-
upFocusCycle
public abstract void upFocusCycle(Component aComponent)
将焦点移动到一个焦点遍历周期。 通常,焦点所有者设置为aComponent的焦点循环根,并将当前焦点循环根设置为新焦点所有者的焦点循环根。 然而,如果aComponent的焦点循环根是Window,那么通常将焦点所有者设置为Window的默认组件进行聚焦,并且当前焦点循环根不变。- 参数
-
aComponent- 作为焦点遍历操作的基础的组件
-
downFocusCycle
public abstract void downFocusCycle(Container aContainer)
将焦点向下移动一个焦点遍历周期。 通常,如果aContainer是焦点循环根,则焦点所有者将设置为aContainer的默认组件以进行对焦,并将当前焦点循环根设置为aContainer。 如果aContainer不是焦点循环根,则不会发生焦点遍历操作。- 参数
-
aContainer- 作为焦点遍历操作的基础的容器
-
focusNextComponent
public final void focusNextComponent()
在当前焦点所有者之后聚焦组件。
-
focusPreviousComponent
public final void focusPreviousComponent()
将组件聚焦到当前焦点所有者之前。
-
upFocusCycle
public final void upFocusCycle()
将焦点移动到当前焦点所有者的一个焦点遍历周期。 通常,新的焦点所有者设置为当前焦点所有者的焦点循环根,并将当前焦点循环根设置为新焦点所有者的焦点循环根。 然而,如果当前焦点所有者的焦点循环根是Window,则通常将焦点所有者设置为焦点循环根的默认组件以进行对焦,并且当前焦点循环根不变。
-
downFocusCycle
public final void downFocusCycle()
当焦点所有者是当前焦点循环根的容器时,将焦点向下移动当前焦点所有者的一个焦点遍历循环。 通常,焦点所有者设置为当前焦点所有者的默认组件以进行对焦,并将当前焦点循环根设置为当前焦点所有者。 如果当前焦点所有者不是作为焦点循环根的容器,则不会发生焦点遍历操作。
-
-