java.lang.Object
java.awt.FocusTraversalPolicy
javax.swing.InternalFrameFocusTraversalPolicy
javax.swing.SortingFocusTraversalPolicy
一个 FocusTraversalPolicy,它通过根据给定的比较器对焦点遍历循环的组件进行排序来确定遍历顺序。不可见和不可显示的组件层次结构部分将不包括在内。
默认情况下,SortingFocusTraversalPolicy 隐式转移焦点向下循环。也就是说,在正常的焦点遍历中,焦点循环根之后遍历的Component将是焦点循环根默认要聚焦的Component。可以使用 setImplicitDownCycleTraversal
方法禁用此行为。
默认情况下,只有当组件可见、可显示、启用和可聚焦时,此类的方法才返回组件。子类可以通过覆盖 accept
方法来修改此行为。
该策略考虑到了 焦点遍历策略提供者 。在搜索 first/last/next/previous Component 时,如果遇到焦点遍历策略提供者,则使用其焦点遍历策略来执行搜索操作。
- 自从:
- 1.4
- 参见:
-
构造方法总结
构造方法修饰符构造方法描述protected
构造一个没有 Comparator 的 SortingFocusTraversalPolicy。SortingFocusTraversalPolicy
(Comparator<? super Component> comparator) 使用指定的 Comparator 构造一个 SortingFocusTraversalPolicy。 -
方法总结
修饰符和类型方法描述protected boolean
确定 Component 作为新的焦点所有者是否是可接受的选择。protected Comparator<? super Component>
返回将用于在焦点遍历循环中对组件进行排序的比较器。getComponentAfter
(Container aContainer, Component aComponent) 返回应在 aComponent 之后接收焦点的 Component。getComponentBefore
(Container aContainer, Component aComponent) 返回应在 aComponent 之前获得焦点的 Component。getDefaultComponent
(Container aContainer) 返回要聚焦的默认组件。getFirstComponent
(Container aContainer) 返回遍历循环中的第一个 Component。boolean
返回此 SortingFocusTraversalPolicy 是否隐式转移焦点。getLastComponent
(Container aContainer) 返回遍历循环中的最后一个 Component。protected void
setComparator
(Comparator<? super Component> comparator) 设置将用于在焦点遍历循环中对组件进行排序的比较器。void
setImplicitDownCycleTraversal
(boolean implicitDownCycleTraversal) 设置此 SortingFocusTraversalPolicy 是否隐式转移焦点。在类 javax.swing.InternalFrameFocusTraversalPolicy 中声明的方法
getInitialComponent
在类 java.awt.FocusTraversalPolicy 中声明的方法
getInitialComponent
-
构造方法详细信息
-
SortingFocusTraversalPolicy
protected SortingFocusTraversalPolicy()构造一个没有 Comparator 的 SortingFocusTraversalPolicy。在焦点循环根或 KeyboardFocusManager 上安装此 FocusTraversalPolicy 之前,子类必须使用setComparator
设置 Comparator。 -
SortingFocusTraversalPolicy
使用指定的 Comparator 构造一个 SortingFocusTraversalPolicy。- 参数:
comparator
-Comparator
排序依据
-
-
方法详情
-
getComponentAfter
返回应在 aComponent 之后接收焦点的 Component。 aContainer 必须是aComponent 的焦点循环根或焦点遍历策略提供者。默认情况下,SortingFocusTraversalPolicy 隐式转移焦点向下循环。也就是说,在正常的焦点遍历中,焦点循环根之后遍历的Component将是焦点循环根默认要聚焦的Component。可以使用
setImplicitDownCycleTraversal
方法禁用此行为。如果 aContainer 是 焦点遍历策略提供者 ,焦点总是向下转移。
- 指定者:
getComponentAfter
在类FocusTraversalPolicy
中- 参数:
aContainer
- aComponent 的焦点循环根或焦点遍历策略提供者aComponent
- 容器的(可能是间接的)子容器,或容器本身- 返回:
- 在 aComponent 之后应该获得焦点的 Component,如果找不到合适的 Component,则返回 null
- 抛出:
IllegalArgumentException
- 如果 aContainer 不是 aComponent 的焦点循环根或焦点遍历策略提供者,或者如果 aContainer 或 aComponent 为 null
-
getComponentBefore
返回应在 aComponent 之前获得焦点的 Component。 aContainer 必须是 aComponent 的焦点循环根或焦点遍历策略提供者。默认情况下,SortingFocusTraversalPolicy 隐式转移焦点向下循环。也就是说,在正常的焦点遍历中,焦点循环根之后遍历的Component将是焦点循环根默认要聚焦的Component。可以使用
setImplicitDownCycleTraversal
方法禁用此行为。如果 aContainer 是 焦点遍历策略提供者 ,焦点总是向下转移。
- 指定者:
getComponentBefore
在类FocusTraversalPolicy
中- 参数:
aContainer
- aComponent 的焦点循环根或焦点遍历策略提供者aComponent
- 容器的(可能是间接的)子容器,或容器本身- 返回:
- 应在 aComponent 之前获得焦点的 Component,如果找不到合适的 Component,则返回 null
- 抛出:
IllegalArgumentException
- 如果 aContainer 不是 aComponent 的焦点循环根或焦点遍历策略提供者,或者如果 aContainer 或 aComponent 为 null
-
getFirstComponent
返回遍历循环中的第一个 Component。此方法用于确定下一个 Component 在正向遍历时获得焦点。- 指定者:
getFirstComponent
在类FocusTraversalPolicy
中- 参数:
aContainer
- aComponent 的焦点循环根或要返回其第一个 Component 的焦点遍历策略提供者- 返回:
- aContainer 遍历循环中的第一个 Component,如果找不到合适的 Component,则返回 null
- 抛出:
IllegalArgumentException
- 如果 aContainer 为空
-
getLastComponent
返回遍历循环中的最后一个 Component。此方法用于确定下一个 Component 在反向遍历时获得焦点。- 指定者:
getLastComponent
在类FocusTraversalPolicy
中- 参数:
aContainer
- aComponent 的焦点循环根或要返回其最后一个 Component 的焦点遍历策略提供者- 返回:
- aContainer 遍历循环中的最后一个 Component,如果找不到合适的 Component,则返回 null
- 抛出:
IllegalArgumentException
- 如果 aContainer 为空
-
getDefaultComponent
返回要聚焦的默认组件。当向下遍历到以 aContainer 为根的新焦点遍历循环时,此 Component 将是第一个获得焦点的。此方法的默认实现返回与getFirstComponent
相同的组件。- 指定者:
getDefaultComponent
在类FocusTraversalPolicy
中- 参数:
aContainer
- aComponent 的焦点循环根或要返回其默认 Component 的焦点遍历策略提供程序- 返回:
- aContainer 遍历循环中的默认 Component,如果找不到合适的 Component,则返回 null
- 抛出:
IllegalArgumentException
- 如果 aContainer 为空- 参见:
-
setImplicitDownCycleTraversal
public void setImplicitDownCycleTraversal(boolean implicitDownCycleTraversal) 设置此 SortingFocusTraversalPolicy 是否隐式转移焦点。如果true
,在正常的焦点遍历期间,在焦点循环根之后遍历的组件将是焦点循环根的默认组件进行焦点。如果为false
,则将遍历以指定焦点循环根为根的焦点遍历循环中的下一个 Component。此属性的默认值为true
。- 参数:
implicitDownCycleTraversal
- 此 SortingFocusTraversalPolicy 是否隐式转移焦点向下循环- 参见:
-
getImplicitDownCycleTraversal
public boolean getImplicitDownCycleTraversal()返回此 SortingFocusTraversalPolicy 是否隐式转移焦点。如果true
,在正常的焦点遍历期间,在焦点循环根之后遍历的 Component 将是焦点循环根的默认 Component 以进行焦点。如果为false
,则将遍历以指定焦点循环根为根的焦点遍历循环中的下一个 Component。- 返回:
- 此 SortingFocusTraversalPolicy 是否隐式转移焦点向下循环
- 参见:
-
setComparator
设置将用于在焦点遍历循环中对组件进行排序的比较器。- 参数:
comparator
- 将用于排序的比较器
-
getComparator
返回将用于在焦点遍历循环中对组件进行排序的比较器。- 返回:
- 将用于排序的比较器
-
accept
确定 Component 作为新的焦点所有者是否是可接受的选择。默认情况下,当且仅当组件可见、可显示、启用和可聚焦时,此方法才会接受组件。- 参数:
aComponent
- 要测试其作为焦点所有者的适用性的组件- 返回:
true
如果 aComponent 可见、可显示、启用且可聚焦;false
否则
-