public abstract class FocusTraversalPolicy extends Object
FocusTraversalPolicy的核心职责是提供确定在UI中向前或向后遍历的下一个和以前的组件的算法。 每个FocusTraversalPolicy还必须提供用于确定遍历周期中的第一个,最后一个和默认组件的算法。 正常的向前和向后遍历分别使用第一个和最后一个组件。 当向下移动到新的聚焦遍历循环中时,默认组件是第一个接收焦点的组件。 FocusTraversalPolicy可以选择提供一种用于确定Window初始组件的算法。 初始组件是第一个在首次显示窗口时接收焦点的组件。
FocusTraversalPolicy考虑到了focus traversal policy providers 。 当搜索第一个/最后一个/下一个/上一个组件时,如果遇到焦点遍历策略提供程序,则其焦点遍历策略用于执行搜索操作。
请参阅How to Use the Focus Subsystem ,在Java教程一节,以及Focus Specification以获取更多信息。
Container.setFocusTraversalPolicy(java.awt.FocusTraversalPolicy)
,
Container.getFocusTraversalPolicy()
,
Container.setFocusCycleRoot(boolean)
,
Container.isFocusCycleRoot(java.awt.Container)
,
Container.setFocusTraversalPolicyProvider(boolean)
,
Container.isFocusTraversalPolicyProvider()
,
KeyboardFocusManager.setDefaultFocusTraversalPolicy(java.awt.FocusTraversalPolicy)
,
KeyboardFocusManager.getDefaultFocusTraversalPolicy()
Constructor and Description |
---|
FocusTraversalPolicy() |
Modifier and Type | Method and Description |
---|---|
abstract Component |
getComponentAfter(Container aContainer, Component aComponent)
返回在aComponent之后应该接收焦点的Component。
|
abstract Component |
getComponentBefore(Container aContainer, Component aComponent)
返回应该在aComponent之前接收焦点的Component。
|
abstract Component |
getDefaultComponent(Container aContainer)
返回要对焦的默认组件。
|
abstract Component |
getFirstComponent(Container aContainer)
返回遍历周期中的第一个Component。
|
Component |
getInitialComponent(Window window)
返回当窗口第一次可见时应接收焦点的组件。
|
abstract Component |
getLastComponent(Container aContainer)
返回遍历周期中的最后一个组件。
|
public abstract Component getComponentAfter(Container aContainer, Component aComponent)
aContainer
- 组件或焦点遍历策略提供程序的焦点循环根
aComponent
-
aComponent
一个(可能是间接的)子,或者一个容器本身
IllegalArgumentException
- 如果aContainer不是aComponent或焦点遍历策略提供程序的焦点循环根,或者aContainer或aComponent为null
public abstract Component getComponentBefore(Container aContainer, Component aComponent)
aContainer
- 组件或焦点遍历策略提供程序的焦点循环根
aComponent
-
aComponent
一个(可能是间接的)子,或者一个容器本身
IllegalArgumentException
- 如果aContainer不是aComponent或焦点遍历策略提供程序的焦点循环根,或者aContainer或aComponent为null
public abstract Component getFirstComponent(Container aContainer)
aContainer
- 要返回其第一个组件的焦点循环根或焦点遍历策略提供程序
IllegalArgumentException
- 如果aContainer为空
public abstract Component getLastComponent(Container aContainer)
aContainer
- 要返回最后一个组件的焦点循环根或焦点遍历策略提供程序
IllegalArgumentException
- 如果aContainer为空
public abstract Component getDefaultComponent(Container aContainer)
aContainer
- 要返回默认组件的焦点循环根或焦点遍历策略提供程序
IllegalArgumentException
- 如果aContainer为空
public Component getInitialComponent(Window window)
show()
或setVisible(true)
,初始组件将不再被使用。
相反,如果窗口丢失并随后重新获得焦点,或者使其成为隐形或不可显示,并随后使其可见和可显示,则Window最新关注的组件将成为焦点所有者。
此方法的默认实现返回默认组件。
window
- 要返回其初始组件的窗口
IllegalArgumentException
- 如果窗口为空
getDefaultComponent(java.awt.Container)
,
Window.getMostRecentFocusOwner()