Module java.desktop
Package java.awt

Class FocusTraversalPolicy

java.lang.Object
java.awt.FocusTraversalPolicy
直接已知的子类:
ContainerOrderFocusTraversalPolicy, InternalFrameFocusTraversalPolicy

public abstract class FocusTraversalPolicy extends Object
焦点遍历策略定义了具有特定焦点循环根的组件遍历顺序。实例可以将该策略应用于任意焦点循环根,允许它们在容器之间共享。当组件层次结构的焦点循环根发生变化时,它们无需重新初始化。

焦点遍历策略的核心责任是提供算法,确定在用户界面中向前或向后遍历时应该聚焦的下一个和上一个组件。每个焦点遍历策略还必须提供算法,确定遍历周期中的第一个、最后一个和默认组件。当正常向前和向后遍历时,第一个和最后一个组件分别用于环绕。默认组件是在进入新的焦点遍历周期时首先接收焦点的组件。焦点遍历策略可以选择提供算法,确定窗口的初始组件。初始组件是在窗口首次可见时首先接收焦点的组件。

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

更多信息,请参阅如何使用焦点子系统,这是《Java教程》中的一个部分,以及焦点规范

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

    • FocusTraversalPolicy

      protected FocusTraversalPolicy()
      构造一个FocusTraversalPolicy
  • Method Details

    • getComponentAfter

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

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

      public abstract Component getFirstComponent(Container aContainer)
      返回遍历周期中的第一个组件。此方法用于确定在向前遍历中遍历环绕时应该聚焦的下一个组件。
      参数:
      aContainer - 要返回其第一个组件的焦点循环根或焦点遍历策略提供者
      返回:
      aContainer遍历周期中的第一个组件,如果找不到合适的组件则返回null
      抛出:
      IllegalArgumentException - 如果aContainer为null
    • getLastComponent

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

      public abstract Component getDefaultComponent(Container aContainer)
      返回默认要聚焦的组件。当进入以aContainer为根的新焦点遍历周期时,此组件将首先接收焦点。
      参数:
      aContainer - 要返回其默认组件的焦点循环根或焦点遍历策略提供者
      返回:
      aContainer遍历周期中的默认组件,如果找不到合适的组件则返回null
      抛出:
      IllegalArgumentException - 如果aContainer为null
    • getInitialComponent

      public Component getInitialComponent(Window window)
      返回窗口首次可见时应该接收焦点的组件。一旦通过调用show()setVisible(true)使窗口可见,初始组件将不再使用。相反,如果窗口失去焦点然后重新获得焦点,或者窗口变为不可见然后重新变为可见,窗口最近聚焦的组件将成为焦点所有者。此方法的默认实现返回默认组件。
      参数:
      window - 要返回其初始组件的窗口
      返回:
      当窗口首次可见时应该接收焦点的组件,如果找不到合适的组件则返回null
      抛出:
      IllegalArgumentException - 如果window为null
      参见: