java.lang.Object java.awt.FocusTraversalPolicy
public abstract class FocusTraversalPolicy
FocusTraversalPolicy 定义一种顺序,按此顺序遍历具有特定焦点循环根的 Component。实例可以将此策略应用于任意焦点循环根,允许它们在整个 Container 共享。当焦点循环根的组件层次结构更改时,不必重新初始化它们。
FocusTraversalPolicy 的核心职责是提供算法,在 UI 中进行向前或向后遍历时确定下一个和上一个要聚焦的 Component。每个 FocusTraversalPolicy 还必须提供算法,确定遍历循环中第一个、最后一个,以及默认的组件。进行正常的正向和反向遍历时,分别使用第一个和最后一个 Component。默认的 Component 是向下遍历到一个新的焦点遍历循环时接收焦点的第一个 Component。FocusTraversalPolicy 可以随意提供确定窗口初始 Component 的算法。初始 Component 是首次将窗口设置为可见时接收焦点的第一个 Component。
FocusTraversalPolicy 会考虑焦点遍历策略提供者。当搜索第一个/最后一个/下一个/上一个 Component 时,如果遇到焦点遍历策略提供者,则使用该焦点遍历策略来执行搜索操作。
有关更多信息,请参阅 The Java Tutorial 中 How to Use the Focus Subsystem 一节和 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()
构造方法摘要 | |
---|---|
FocusTraversalPolicy() |
方法摘要 | |
---|---|
abstract Component |
getComponentAfter(Container aContainer, Component aComponent) 返回应该接收 aComponent 之后的焦点的 Component,aContainer 必须是 aComponent 的焦点循环根,或者焦点遍历策略提供者。 |
abstract Component |
getComponentBefore(Container aContainer, Component aComponent) 返回应该接收 aComponent 之前的焦点的 Component,aContainer 必须是 aComponent 的焦点循环根,或焦点遍历策略提供者。 |
abstract Component |
getDefaultComponent(Container aContainer) 返回要聚焦的默认 Component。 |
abstract Component |
getFirstComponent(Container aContainer) 返回遍历循环中的第一个 Component。 |
Component |
getInitialComponent(Window window) 返回第一次将窗口设置为可见时,应该接收焦点的 Component。 |
abstract Component |
getLastComponent(Container aContainer) 返回遍历循环中的最后一个 Component。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public FocusTraversalPolicy()
方法详细信息 |
---|
public abstract Component getComponentAfter(Container aContainer, Component aComponent)
aContainer
- aComponent 的焦点循环根,或焦点遍历策略提供者
aComponent
- aContainer 的子级(可能是间接的),或 aContainer 自身
IllegalArgumentException
- 如果 aContainer 不是 aComponent 的焦点循环根或焦点遍历策略提供者,或者 aContainer 或 aComponent 为 null
public abstract Component getComponentBefore(Container aContainer, Component aComponent)
aContainer
- aComponent 的焦点循环根,或焦点遍历策略提供者
aComponent
- aContainer 的子级(可能是间接的),或 aContainer 自身
IllegalArgumentException
- 如果 aContainer 不是 aComponent 的焦点循环根或焦点遍历策略提供者,或者 aContainer 或 aComponent 为 null
public abstract Component getFirstComponent(Container aContainer)
aContainer
- 焦点循环根,或要返回第一个 Component 的焦点遍历策略提供者
IllegalArgumentException
- 如果 aContainer 为 null
public abstract Component getLastComponent(Container aContainer)
aContainer
- 焦点循环根,或要返回最后一个 Component 的焦点遍历策略提供者
IllegalArgumentException
- 如果 aContainer 为 null
public abstract Component getDefaultComponent(Container aContainer)
aContainer
- 焦点循环根,或要返回其默认 Component 的焦点遍历策略提供者
IllegalArgumentException
- 如果 aContainer 为 null
public Component getInitialComponent(Window window)
show()
或
setVisible(true)
将窗口设置为可见的,将不再使用初始 Component。相反,如果窗口失去焦点、随后又重获焦点,或者设置为不可见或不可显示、随后又设置为可见或可显示,则窗口最近聚焦的 Component 将成为焦点所有者。此方法的默认实现返回默认 Component。
window
- 要返回其初始组件的 Window
IllegalArgumentException
- 如果 window 为 null
getDefaultComponent(java.awt.Container)
,
Window.getMostRecentFocusOwner()