模块 java.desktop

类 SortingFocusTraversalPolicy

已知子类:
LayoutFocusTraversalPolicy

public class SortingFocusTraversalPolicy extends InternalFrameFocusTraversalPolicy
一个 FocusTraversalPolicy,它通过根据给定的比较器对焦点遍历循环的组件进行排序来确定遍历顺序。不可见和不可显示的组件层次结构部分将不包括在内。

默认情况下,SortingFocusTraversalPolicy 隐式转移焦点向下循环。也就是说,在正常的焦点遍历中,焦点循环根之后遍历的Component将是焦点循环根默认要聚焦的Component。可以使用 setImplicitDownCycleTraversal 方法禁用此行为。

默认情况下,只有当组件可见、可显示、启用和可聚焦时,此类的方法才返回组件。子类可以通过覆盖 accept 方法来修改此行为。

该策略考虑到了 焦点遍历策略提供者 。在搜索 first/last/next/previous Component 时,如果遇到焦点遍历策略提供者,则使用其焦点遍历策略来执行搜索操作。

自从:
1.4
参见:
  • 构造方法详细信息

    • SortingFocusTraversalPolicy

      protected SortingFocusTraversalPolicy()
      构造一个没有 Comparator 的 SortingFocusTraversalPolicy。在焦点循环根或 KeyboardFocusManager 上安装此 FocusTraversalPolicy 之前,子类必须使用 setComparator 设置 Comparator。
    • SortingFocusTraversalPolicy

      public SortingFocusTraversalPolicy(Comparator <? super Component > comparator)
      使用指定的 Comparator 构造一个 SortingFocusTraversalPolicy。
      参数:
      comparator - Comparator 排序依据
  • 方法详情

    • getComponentAfter

      public Component  getComponentAfter(Container  aContainer, Component  aComponent)
      返回应在 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

      public Component  getComponentBefore(Container  aContainer, Component  aComponent)
      返回应在 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

      public Component  getFirstComponent(Container  aContainer)
      返回遍历循环中的第一个 Component。此方法用于确定下一个 Component 在正向遍历时获得焦点。
      指定者:
      getFirstComponent 在类 FocusTraversalPolicy
      参数:
      aContainer - aComponent 的焦点循环根或要返回其第一个 Component 的焦点遍历策略提供者
      返回:
      aContainer 遍历循环中的第一个 Component,如果找不到合适的 Component,则返回 null
      抛出:
      IllegalArgumentException - 如果 aContainer 为空
    • getLastComponent

      public Component  getLastComponent(Container  aContainer)
      返回遍历循环中的最后一个 Component。此方法用于确定下一个 Component 在反向遍历时获得焦点。
      指定者:
      getLastComponent 在类 FocusTraversalPolicy
      参数:
      aContainer - aComponent 的焦点循环根或要返回其最后一个 Component 的焦点遍历策略提供者
      返回:
      aContainer 遍历循环中的最后一个 Component,如果找不到合适的 Component,则返回 null
      抛出:
      IllegalArgumentException - 如果 aContainer 为空
    • getDefaultComponent

      public Component  getDefaultComponent(Container  aContainer)
      返回要聚焦的默认组件。当向下遍历到以 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

      protected void setComparator(Comparator <? super Component > comparator)
      设置将用于在焦点遍历循环中对组件进行排序的比较器。
      参数:
      comparator - 将用于排序的比较器
    • getComparator

      protected Comparator <? super Component > getComparator()
      返回将用于在焦点遍历循环中对组件进行排序的比较器。
      返回:
      将用于排序的比较器
    • accept

      protected boolean accept(Component  aComponent)
      确定 Component 作为新的焦点所有者是否是可接受的选择。默认情况下,当且仅当组件可见、可显示、启用和可聚焦时,此方法才会接受组件。
      参数:
      aComponent - 要测试其作为焦点所有者的适用性的组件
      返回:
      true 如果 aComponent 可见、可显示、启用且可聚焦; false否则