- java.lang.Object
-
- java.awt.KeyboardFocusManager
-
- 实现的所有接口
-
KeyEventDispatcher
,KeyEventPostProcessor
- 已知直接子类:
-
DefaultKeyboardFocusManager
public abstract class KeyboardFocusManagerextends Objectimplements KeyEventDispatcher, KeyEventPostProcessor
KeyboardFocusManager负责管理活动和聚焦的Windows以及当前焦点所有者。 焦点所有者被定义为应用程序中的组件,该组件通常将接收用户生成的所有KeyEvent。 聚焦窗口是包含焦点所有者的窗口。 只有一个框架或一个对话框可以是活动窗口。 本机窗口系统可以表示具有特殊装饰的活动窗口或其子窗口,例如突出显示的标题栏。 活动窗口始终是聚焦窗口,或者是聚焦窗口所有者的第一个框架或对话框。KeyboardFocusManager既是客户端代码的集中位置,用于查询焦点所有者并启动焦点更改,还包括所有FocusEvent的事件调度程序,与焦点相关的WindowEvent以及KeyEvents。
有些浏览器将不同代码库中的applet分成不同的上下文,并在这些上下文之间建立隔阂。 在这种情况下,每个上下文将有一个KeyboardFocusManager。 其他浏览器将所有applet放在同一个上下文中,这意味着所有applet只有一个全局的KeyboardFocusManager。 此行为取决于实现。 有关更多信息,请参阅浏览器的文档。 然而,无论有多少上下文,每个ClassLoader都不会有多个焦点所有者,聚焦窗口或活动窗口。
请参阅How to Use the Focus Subsystem ,在Java教程一节,并Focus Specification获取更多信息。
- 从以下版本开始:
- 1.4
- 另请参见:
-
Window
,Frame
,Dialog
,FocusEvent
,WindowEvent
,KeyEvent
-
-
字段汇总
字段 变量和类型 字段 描述 static int
BACKWARD_TRAVERSAL_KEYS
后向焦点遍历键的标识符。static int
DOWN_CYCLE_TRAVERSAL_KEYS
Down Cycle焦点遍历键的标识符。static int
FORWARD_TRAVERSAL_KEYS
前向焦点遍历键的标识符。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(VetoableChangeListener listener)
将VetoableChangeListener添加到侦听器列表。void
addVetoableChangeListener(String propertyName, VetoableChangeListener listener)
将VetoableChangeListener添加到特定属性的侦听器列表中。void
clearFocusOwner()
如果焦点所有者存在并且与调用线程位于相同的上下文中,则清除Java和本机级别的焦点所有者,否则该方法将以静默方式返回。void
clearGlobalFocusOwner()
清除Java和本机级别的全局焦点所有者。protected abstract void
dequeueKeyEvents(long after, Component untilFocused)
由AWT调用以通知KeyboardFocusManager它应该取消KeyEvents的延迟分派。protected abstract void
discardKeyEvents(Component comp)
由AWT调用以通知KeyboardFocusManager它应该取消KeyEvents的延迟分派。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)
由AWT调用以通知KeyboardFocusManager它应该延迟调度KeyEvent,直到指定的Component成为焦点所有者。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)
返回给定遍历操作的一组默认焦点遍历键。FocusTraversalPolicy
getDefaultFocusTraversalPolicy()
返回默认的FocusTraversalPolicy。Window
getFocusedWindow()
如果焦点窗口与调用线程位于相同的上下文中,则返回焦点窗口。Component
getFocusOwner()
如果焦点所有者与调用线程位于相同的上下文中,则返回焦点所有者。protected Window
getGlobalActiveWindow()
返回活动Window,即使调用线程与活动Window位于不同的上下文中。protected Container
getGlobalCurrentFocusCycleRoot()
返回当前焦点循环根,即使调用线程与当前焦点循环根不同。protected Window
getGlobalFocusedWindow()
返回焦点窗口,即使调用线程与焦点窗口位于不同的上下文中。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或任何已安装的KeyEventDispatchers再次调度该事件。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(VetoableChangeListener listener)
从侦听器列表中删除VetoableChangeListener。void
removeVetoableChangeListener(String propertyName, 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)
设置活动窗口。void
setGlobalCurrentFocusCycleRoot(Container newFocusCycleRoot)
设置当前焦点循环根。protected void
setGlobalFocusedWindow(Window focusedWindow)
设置焦点窗口。protected void
setGlobalFocusOwner(Component focusOwner)
设置焦点所有者。protected void
setGlobalPermanentFocusOwner(Component permanentFocusOwner)
设置永久焦点所有者。void
upFocusCycle()
将焦点从当前焦点所有者向上移动一个焦点遍历循环。abstract void
upFocusCycle(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
Up Cycle焦点遍历键的标识符。
-
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,则当前的KeyboardFocusManager将替换为DefaultKeyboardFocusManager的新实例。如果安装了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。此方法实际上不会将焦点设置为指定的Component。 它仅存储随后由
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事件。 此操作完成后,本机窗口系统将丢弃所有用户生成的KeyEvent,直到用户选择新的Component来接收焦点,或者通过调用
requestFocus()
明确给予Component。 此操作不会更改聚焦或活动的Windows。- 从以下版本开始:
- 1.8
- 另请参见:
-
Component.requestFocus()
,FocusEvent.FOCUS_LOST
-
clearGlobalFocusOwner
public void clearGlobalFocusOwner() throws SecurityException
清除Java和本机级别的全局焦点所有者。 如果存在焦点所有者,则该Component将收到永久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事件的最后一个组件。 除非临时焦点更改当前生效,否则焦点所有者和永久焦点所有者是等效的。 在这种情况下,当临时焦点改变结束时,永久焦点所有者将再次成为焦点所有者。此方法实际上不会将焦点设置为指定的Component。 它仅存储随后由
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()
如果活动Window与调用线程位于同一上下文中,则返回活动Window。 只有一个框架或一个对话框可以是活动窗口。 本机窗口系统可以表示具有特殊装饰的活动窗口或其子窗口,例如突出显示的标题栏。 活动窗口始终是聚焦窗口,或者是聚焦窗口所有者的第一个框架或对话框。- 结果
- 活动Window,如果活动Window不是调用线程的上下文的成员,则返回null
- 另请参见:
-
getGlobalActiveWindow()
,setGlobalActiveWindow(java.awt.Window)
-
getGlobalActiveWindow
protected Window getGlobalActiveWindow() throws SecurityException
返回活动Window,即使调用线程与活动Window位于不同的上下文中。 只有一个框架或一个对话框可以是活动窗口。 本机窗口系统可以表示具有特殊装饰的活动窗口或其子窗口,例如突出显示的标题栏。 活动窗口始终是聚焦窗口,或者是聚焦窗口所有者的第一个框架或对话框。- 结果
- 活动窗口
- 异常
-
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为null - 另请参见:
-
getDefaultFocusTraversalPolicy()
,Container.setFocusTraversalPolicy(java.awt.FocusTraversalPolicy)
,Container.getFocusTraversalPolicy()
-
setDefaultFocusTraversalKeys
public void setDefaultFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes)
设置给定遍历操作的默认焦点遍历键。 此遍历键Set
将在所有影响Window
S作没有这样Set
自己的明确定义。Set
也将由Windows
中任何没有明确定义的Set
的子Component
递归地继承。默认焦点遍历键的默认值取决于实现。 Sun建议特定本机平台的所有实现都使用相同的默认值。 下面列出了Windows和Unix的建议。 这些建议用于Sun AWT实现。
Recommended default values for focus traversal keys Identifier Meaning DefaultKeyboardFocusManager.FORWARD_TRAVERSAL_KEYS
Normal forward keyboard traversalTAB
onKEY_PRESSED
,CTRL-TAB
onKEY_PRESSED
KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS
Normal reverse keyboard traversalSHIFT-TAB
onKEY_PRESSED
,CTRL-SHIFT-TAB
onKEY_PRESSED
KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS
Go up one focus traversal cycle noneKeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS
Go down one focus traversal cycle noneSet
; 建议使用Collections.EMPTY_SET
。使用
AWTKeyStroke
API,客户端代码可以指定在其上的两个特定KeyEvent
S,KEY_PRESSED
或KEY_RELEASED
,会发生焦点遍历操作。 但是,无论指定了哪个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)
返回给定遍历操作的一组默认焦点遍历键。 此遍历键Set将在没有明确定义的自己的Set的所有Windows上生效。 此Set也将由那些没有明确定义的自己的Set的那些Windows的任何子组件递归地继承。 (有关每个操作的完整说明,请参阅setDefaultFocusTraversalKeys
)- 参数
-
id
- KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS或KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS之一 - 结果
-
Set
的AWTKeyStroke
s用于指定的操作;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当前是否正在管理此应用程序或applet的浏览器上下文(“managingFocus”)的焦点
- 焦点所有者(“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。 应该使用此方法来删除为此类的所有绑定属性注册的PropertyChangeListener。如果listener为null,则不会抛出异常并且不执行任何操作。
- 参数
-
listener
- 要删除的PropertyChangeListener - 另请参见:
-
addPropertyChangeListener(java.beans.PropertyChangeListener)
,getPropertyChangeListeners()
,removePropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)
-
getPropertyChangeListeners
public PropertyChangeListener[] getPropertyChangeListeners()
返回在此键盘焦点管理器上注册的所有属性更改侦听器的数组。- 结果
- 所有这个键盘焦点管理器的
PropertyChangeListener
s或如果当前没有注册属性更改侦听器的空数组 - 从以下版本开始:
- 1.4
- 另请参见:
-
addPropertyChangeListener(java.beans.PropertyChangeListener)
,removePropertyChangeListener(java.beans.PropertyChangeListener)
,getPropertyChangeListeners(java.lang.String)
-
addPropertyChangeListener
public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
将PropertyChangeListener添加到特定属性的侦听器列表中。 指定的属性可以是用户定义的,也可以是以下之一:- KeyboardFocusManager当前是否正在管理此应用程序或applet的浏览器上下文(“managingFocus”)的焦点
- 焦点所有者(“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。 此方法应用于删除为特定绑定属性注册的PropertyChangeListener。如果listener为null,则不会抛出异常并且不执行任何操作。
- 参数
-
propertyName
- 有效的属性名称 -
listener
- 要删除的PropertyChangeListener - 另请参见:
-
addPropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)
,getPropertyChangeListeners(java.lang.String)
,removePropertyChangeListener(java.beans.PropertyChangeListener)
-
getPropertyChangeListeners
public PropertyChangeListener[] getPropertyChangeListeners(String propertyName)
返回与命名属性关联的所有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。 此方法应用于删除为此类的所有可否决属性注册的VetoableChangeListener。如果listener为null,则不会抛出异常并且不执行任何操作。
- 参数
-
listener
- 要删除的VetoableChangeListener - 另请参见:
-
addVetoableChangeListener(java.beans.VetoableChangeListener)
,getVetoableChangeListeners()
,removeVetoableChangeListener(java.lang.String,java.beans.VetoableChangeListener)
-
getVetoableChangeListeners
public VetoableChangeListener[] getVetoableChangeListeners()
返回在此键盘焦点管理器上注册的所有可否决更改侦听器的数组。- 结果
- 所有这个键盘焦点管理器的
VetoableChangeListener
s或一个空数组,如果当前没有注册的可更改的监听器 - 从以下版本开始:
- 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。 此方法应用于删除为特定绑定属性注册的VetoableChangeListener。如果listener为null,则不会抛出异常并且不执行任何操作。
- 参数
-
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的调度程序链。 在最终调度KeyEvent本身之前,此KeyboardFocusManager将请求每个KeyEventDispatcher调度用户生成的KeyEvent。 KeyEventDispatcher将按添加顺序通知。 只要一个KeyEventDispatcher从其dispatchKeyEvent
方法返回true
,通知就会暂停。 可以添加的KeyEventDispatcher总数没有限制,也没有限制可以添加特定KeyEventDispatcher实例的次数。如果指定了null调度程序,则不执行任何操作,也不会引发异常。
在多线程应用程序中,
KeyEventDispatcher
的行为与其他AWT侦听器相同。 有关详细信息,请参阅AWT Threading Issues 。- 参数
-
dispatcher
- 要添加到调度程序链的KeyEventDispatcher - 另请参见:
-
removeKeyEventDispatcher(java.awt.KeyEventDispatcher)
-
removeKeyEventDispatcher
public void removeKeyEventDispatcher(KeyEventDispatcher dispatcher)
删除之前添加到此KeyboardFocusManager的调度程序链的KeyEventDispatcher。 除非通过调用addKeyEventDispatcher
明确重新注册,否则此KeyboardFocusManager本身不能被删除。如果指定了null调度程序,如果指定的调度程序不在调度程序链中,或者指定了此KeyboardFocusManager而未显式重新注册,则不执行任何操作,也不会引发异常。
在多线程应用程序中,
KeyEventDispatcher
的行为与其他AWT侦听器相同。 有关详细信息,请参阅AWT Threading Issues 。- 参数
-
dispatcher
- 要从调度程序链中删除的KeyEventDispatcher - 另请参见:
-
addKeyEventDispatcher(java.awt.KeyEventDispatcher)
-
getKeyEventDispatchers
protected List<KeyEventDispatcher> getKeyEventDispatchers()
以List的形式返回此KeyboardFocusManager的KeyEventDispatcher链。 除非通过调用addKeyEventDispatcher
明确重新注册,否则List不会包含此KeyboardFocusManager。 如果没有注册其他KeyEventDispatcher,则实现可以自由返回null或长度为0的List。客户端代码不应该假定一个行为超过另一个,也不应该假设行为一旦建立就不会改变。- 结果
- 一个可能为null或空的KeyEventDispatcher列表
- 另请参见:
-
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实例的次数。如果指定了null后处理器,则不执行任何操作,也不会引发异常。
在多线程应用程序中,
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()
以List的形式返回此KeyboardFocusManager的KeyEventPostProcessor链。 除非通过调用addKeyEventPostProcessor
明确添加,否则List不会包含此KeyboardFocusManager。 如果没有注册KeyEventPostProcessors,则实现可以自由地返回null或长度为0的List。客户端代码不应该假定一个行为超过另一个,也不应该假设行为一旦建立就不会改变。- 结果
- 一个可能为null或空的KeyEventPostProcessors列表
- 另请参见:
-
addKeyEventPostProcessor(java.awt.KeyEventPostProcessor)
,removeKeyEventPostProcessor(java.awt.KeyEventPostProcessor)
-
dispatchEvent
public abstract boolean dispatchEvent(AWTEvent e)
AWT事件调度程序调用此方法,请求当前KeyboardFocusManager代表它调度指定的事件。 预计所有KeyboardFocusManagers都将调度所有FocusEvent,与焦点相关的所有WindowEvent以及所有KeyEvent。 应根据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
和客户端定义的KeyEventDispatcher的客户端实现必须调用redispatchEvent(target, e)
而不是target.dispatchEvent(e)
来调度事件。此方法仅供KeyboardFocusManagers和KeyEventDispatcher使用。 它不适合一般客户使用。
- 参数
-
target
- 应将事件分派到的组件 -
e
- 要派遣的事件 - 另请参见:
-
dispatchEvent(java.awt.AWTEvent)
,KeyEventDispatcher
-
dispatchKeyEvent
public abstract boolean dispatchKeyEvent(KeyEvent e)
通常,如果调度程序链中没有其他KeyEventDispatcher调度KeyEvent,或者没有注册其他KeyEventDispatcher,则此方法将由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表示指定的focusedComponent的焦点遍历键时,此方法才启动焦点遍历操作。 预计focusedComponent是当前的焦点所有者,尽管不一定是这种情况。 如果不是,焦点遍历将继续进行,就好像focusedComponent是当前焦点所有者一样。- 参数
-
focusedComponent
- 如果指定的事件表示组件的焦点遍历键,则该组件将成为焦点遍历操作的基础 -
e
- 可能表示焦点遍历键的事件
-
enqueueKeyEvents
protected abstract void enqueueKeyEvents(long after, Component untilFocused)
由AWT调用以通知KeyboardFocusManager它应该延迟调度KeyEvent,直到指定的Component成为焦点所有者。 如果客户端代码请求焦点更改,并且AWT确定此请求可能由本机窗口系统授予,则AWT将调用此方法。 KeyboardFocusManager负责延迟调度时间戳晚于指定时间戳的KeyEvent,直到指定的Component收到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
的一次或多次调用enqueueKeyEvents
所有KeyEvent都应被丢弃。- 参数
-
comp
- 在对enqueueKeyEvents
一次或多次调用中指定的组件 - 另请参见:
-
enqueueKeyEvents(long, java.awt.Component)
,dequeueKeyEvents(long, java.awt.Component)
-
focusNextComponent
public abstract void focusNextComponent(Component aComponent)
在aComponent之后聚焦Component,通常基于FocusTraversalPolicy。- 参数
-
aComponent
- 作为焦点遍历操作基础的组件 - 另请参见:
-
FocusTraversalPolicy
-
focusPreviousComponent
public abstract void focusPreviousComponent(Component aComponent)
在aComponent之前聚焦Component,通常基于FocusTraversalPolicy。- 参数
-
aComponent
- 作为焦点遍历操作基础的组件 - 另请参见:
-
FocusTraversalPolicy
-
upFocusCycle
public abstract void upFocusCycle(Component aComponent)
将焦点向上移动一个焦点遍历循环。 通常,焦点所有者设置为aComponent的焦点循环根,并且当前焦点循环根设置为新焦点所有者的焦点循环根。 但是,如果aComponent的焦点循环根是一个Window,那么焦点所有者通常会设置为要聚焦的Window的默认Component,并且当前的焦点循环根不变。- 参数
-
aComponent
- 作为焦点遍历操作基础的组件
-
downFocusCycle
public abstract void downFocusCycle(Container aContainer)
将焦点向下移动一个焦点遍历循环。 通常,如果aContainer是焦点循环根,则焦点所有者将设置为aContainer的默认Component以进行焦点,并将当前焦点循环根设置为aContainer。 如果aContainer不是焦点循环根,则不会发生焦点遍历操作。- 参数
-
aContainer
- 作为焦点遍历操作基础的Container
-
focusNextComponent
public final void focusNextComponent()
在当前焦点所有者之后聚焦Component。
-
focusPreviousComponent
public final void focusPreviousComponent()
在当前焦点所有者之前聚焦Component。
-
upFocusCycle
public final void upFocusCycle()
将焦点从当前焦点所有者向上移动一个焦点遍历循环。 通常,新焦点所有者设置为当前焦点所有者的焦点循环根,并且当前焦点循环根设置为新焦点所有者的焦点循环根。 但是,如果当前焦点所有者的焦点循环根是一个窗口,那么焦点所有者通常被设置为焦点循环根的默认组件以进行焦点,并且当前焦点循环根不变。
-
downFocusCycle
public final void downFocusCycle()
将焦点从当前焦点所有者向下移动一个焦点遍历循环,当且仅当当前焦点所有者是作为焦点循环根的Container时。 通常,焦点所有者设置为当前焦点所有者的默认Component以进行焦点,并且当前焦点周期根目录设置为当前焦点所有者。 如果当前焦点所有者不是作为焦点循环根的Container,则不会发生焦点遍历操作。
-
-