Module java.desktop
Package javax.swing

Class SortingFocusTraversalPolicy

直接已知的子类:
LayoutFocusTraversalPolicy

public class SortingFocusTraversalPolicy extends InternalFrameFocusTraversalPolicy
一个FocusTraversalPolicy,通过基于给定的Comparator对焦点遍历循环的组件进行排序来确定遍历顺序。不可见和不可显示的部分组件将不会被包括在内。

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

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

此策略考虑到焦点遍历策略提供者。在搜索第一个/最后一个/下一个/上一个组件时,如果遇到焦点遍历策略提供者,则使用其焦点遍历策略执行搜索操作。

自 JDK 版本:
1.4
参见:
  • Constructor Details

    • SortingFocusTraversalPolicy

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

      public SortingFocusTraversalPolicy(Comparator<? super Component> comparator)
      构造一个带有指定Comparator的SortingFocusTraversalPolicy。
      参数:
      comparator - 要排序的Comparator
  • Method Details

    • getComponentAfter

      public Component getComponentAfter(Container aContainer, Component aComponent)
      返回aComponent之后应该接收焦点的组件。aContainer必须是aComponent的焦点循环根或焦点遍历策略提供者。

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

      如果aContainer是焦点遍历策略提供者,则焦点总是向下传递。

      指定者:
      getComponentAfter 在类 FocusTraversalPolicy
      参数:
      aContainer - aComponent的焦点循环根或焦点遍历策略提供者
      aComponent - aContainer的(可能间接)子级,或aContainer本身
      返回:
      aComponent之后应该接收焦点的组件,如果找不到合适的组件则返回null
      抛出:
      IllegalArgumentException - 如果aContainer不是aComponent的焦点循环根或焦点遍历策略提供者,或者aContainer或aComponent为null
    • getComponentBefore

      public Component getComponentBefore(Container aContainer, Component aComponent)
      返回aComponent之前应该接收焦点的组件。aContainer必须是aComponent的焦点循环根或焦点遍历策略提供者。

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

      如果aContainer是焦点遍历策略提供者,则焦点总是向下传递。

      指定者:
      getComponentBefore 在类 FocusTraversalPolicy
      参数:
      aContainer - aComponent的焦点循环根或焦点遍历策略提供者
      aComponent - aContainer的(可能间接)子级,或aContainer本身
      返回:
      aComponent之前应该接收焦点的组件,如果找不到合适的组件则返回null
      抛出:
      IllegalArgumentException - 如果aContainer不是aComponent的焦点循环根或焦点遍历策略提供者,或者aContainer或aComponent为null
    • getFirstComponent

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

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

      public Component getDefaultComponent(Container aContainer)
      返回默认要聚焦的组件。当进入以aContainer为根的新焦点遍历循环时,此组件将首先接收焦点。此方法的默认实现返回与getFirstComponent相同的组件。
      指定者:
      getDefaultComponent 在类 FocusTraversalPolicy
      参数:
      aContainer - aComponent的焦点循环根或焦点遍历策略提供者,其默认组件将被返回
      返回:
      aContainer遍历循环中的默认组件,如果找不到合适的组件则返回null
      抛出:
      IllegalArgumentException - 如果aContainer为null
      参见:
    • setImplicitDownCycleTraversal

      public void setImplicitDownCycleTraversal(boolean implicitDownCycleTraversal)
      设置此SortingFocusTraversalPolicy是否隐式地向下传递焦点循环。如果为true,在正常的焦点遍历过程中,焦点循环根之后遍历的组件将是焦点循环根的默认要聚焦的组件。如果为false,则将遍历指定焦点循环根的焦点遍历循环中的下一个组件。此属性的默认值为true
      参数:
      implicitDownCycleTraversal - 设置此SortingFocusTraversalPolicy是否隐式地向下传递焦点循环
      参见:
    • getImplicitDownCycleTraversal

      public boolean getImplicitDownCycleTraversal()
      返回此SortingFocusTraversalPolicy是否隐式地向下传递焦点循环。如果为true,在正常的焦点遍历过程中,焦点循环根之后遍历的组件将是焦点循环根的默认要聚焦的组件。如果为false,则将遍历指定焦点循环根的焦点遍历循环中的下一个组件。
      返回:
      此SortingFocusTraversalPolicy是否隐式地传递焦点向下循环
      参见:
    • setComparator

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

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

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