Module  java.desktop
软件包  javax.swing

Class SortingFocusTraversalPolicy

  • 已知直接子类:
    LayoutFocusTraversalPolicy


    public class SortingFocusTraversalPolicy
    extends InternalFrameFocusTraversalPolicy
    FocusTraversalPolicy通过基于给定的比较器对焦点遍历周期的组件进行排序来确定遍历顺序。 组件层次结构中不可见和可显示的部分将不包括在内。

    默认情况下,SortingFocusTraversalPolicy会隐式转移焦点下行周期。 也就是说,在正常聚焦遍历期间,在聚焦周期根之后遍历的组件将是focus-cycle-root的默认组件对焦。 可以使用setImplicitDownCycleTraversal方法禁用此行为。

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

    该政策考虑到了focus traversal policy providers 当搜索第一个/最后一个/下一个/上一个组件时,如果遇到焦点遍历策略提供程序,则其焦点遍历策略用于执行搜索操作。

    从以下版本开始:
    1.4
    另请参见:
    Comparator
    • 构造方法详细信息

      • SortingFocusTraversalPolicy

        protected SortingFocusTraversalPolicy​()
        构造一个没有比较器的SortingFocusTraversalPolicy。 子类必须使用setComparator设置Comparator, setComparator才能在Focus Cycle root或KeyboardFocusManager上安装此FocusTraversalPolicy。
      • SortingFocusTraversalPolicy

        public SortingFocusTraversalPolicy​(Comparator<? super Component> comparator)
        使用指定的比较器构造SortingFocusTraversalPolicy。
        参数
        comparator - 要排序的 Comparator
    • 方法详细信息

      • getComponentAfter

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

        默认情况下,SortingFocusTraversalPolicy会隐式转移焦点下行周期。 也就是说,在正常聚焦遍历期间,在聚焦周期根之后遍历的组件将是focus-cycle-root的默认组件对焦。 可以使用setImplicitDownCycleTraversal方法禁用此行为。

        如果aContainer是focus traversal policy provider ,焦点总是被转移到周期。

        Specified by:
        getComponentAfterFocusTraversalPolicy
        参数
        aContainer - aComponent或焦点遍历策略提供者的焦点循环根
        aComponent - aContainer的一个(可能是间接的)子,或者一个 aComponent本身
        结果
        应该在aComponent之后接收焦点的组件,如果没有找到合适的组件,则为null
        异常
        IllegalArgumentException - 如果aContainer不是aComponent或焦点遍历策略提供程序的焦点循环根,或者aContainer或aComponent为null
      • getComponentBefore

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

        默认情况下,SortingFocusTraversalPolicy会隐式转移焦点下行周期。 也就是说,在正常聚焦遍历期间,在聚焦周期根之后遍历的组件将是focus-cycle-root的默认组件对焦。 可以使用setImplicitDownCycleTraversal方法禁用此行为。

        如果aContainer是focus traversal policy provider ,焦点总是转移到周期。

        Specified by:
        getComponentBefore中的 FocusTraversalPolicy
        参数
        aContainer - aComponent或焦点遍历策略提供程序的焦点循环根
        aComponent - aContainer的一个(可能是间接的)子,或者一个 aComponent本身
        结果
        应该在aComponent之前收到焦点的组件,如果没有找到合适的组件,则为null
        异常
        IllegalArgumentException - 如果aContainer不是aComponent或焦点遍历策略提供程序的焦点循环根,或者aContainer或aComponent为null
      • getFirstComponent

        public Component getFirstComponent​(Container aContainer)
        返回遍历周期中的第一个Component。 该方法用于确定当向前方向遍历包装时要聚焦的下一个组件。
        Specified by:
        getFirstComponentFocusTraversalPolicy
        参数
        aContainer - 要返回其第一个组件的组件或焦点遍历策略提供程序的焦点循环根
        结果
        aContainer遍历周期中的第一个组件,如果没有找到合适的组件,则返回null
        异常
        IllegalArgumentException - 如果aContainer为空
      • getLastComponent

        public Component getLastComponent​(Container aContainer)
        返回遍历周期中的最后一个组件。 该方法用于确定当相反方向遍历包装时要聚焦的下一个组件。
        Specified by:
        getLastComponent中的 FocusTraversalPolicy
        参数
        aContainer - 要返回其最后一个组件的组件或焦点遍历策略提供程序的焦点循环根
        结果
        aContainer遍历周期中的最后一个组件,如果没有找到合适的组件,则返回null
        异常
        IllegalArgumentException - 如果aContainer为空
      • getDefaultComponent

        public Component getDefaultComponent​(Container aContainer)
        返回要对焦的默认组件。 当向下移动到基于aContainer的新的焦点遍历循环时,该组件将成为第一个接收焦点的组件。 此方法的默认实现将返回与getFirstComponent相同的组件。
        Specified by:
        getDefaultComponentFocusTraversalPolicy
        参数
        aContainer - 要返回其默认组件的组件或焦点遍历策略提供程序的焦点循环根
        结果
        aContainer遍历周期中的默认组件,如果没有找到合适的组件,则返回null
        异常
        IllegalArgumentException - 如果aContainer为空
        另请参见:
        getFirstComponent(java.awt.Container)
      • setImplicitDownCycleTraversal

        public void setImplicitDownCycleTraversal​(boolean implicitDownCycleTraversal)
        设置此SortingFocusTraversalPolicy是否隐式转移焦点下行周期。 如果为true ,则在正常聚焦遍历期间,聚焦周期之后遍历的组件将是focus-cycle-root的默认组件对焦。 如果是false ,则将以遍历指定的焦点循环根为基础的下一个聚焦遍历循环中的组件被替换。 该属性的默认值为true
        参数
        implicitDownCycleTraversal - 此SortingFocusTraversalPolicy是否隐式转移焦点下行周期
        另请参见:
        getImplicitDownCycleTraversal()getFirstComponent(java.awt.Container)
      • getImplicitDownCycleTraversal

        public boolean getImplicitDownCycleTraversal​()
        返回此SortingFocusTraversalPolicy是否隐式转移焦点下行周期。 如果为true ,在正常聚焦遍历期间,聚焦周期之后遍历的组件将是focus-cycle-root的默认组件对焦。 如果是false ,则将以遍历指定的焦点循环根的方式遍历关注遍历循环中的下一个组件。
        结果
        这个SortingFocusTraversalPolicy是否隐式地转移焦点下来循环
        另请参见:
        setImplicitDownCycleTraversal(boolean)getFirstComponent(java.awt.Container)
      • setComparator

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

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

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