APIdia Launch Partner
Top Description Fields Constructors Methods
java.awt

public Class ContainerOrderFocusTraversalPolicy

extends FocusTraversalPolicy
implements Serializable
Class Inheritance
All Implemented Interfaces
java.io.Serializable
Known Direct Subclasses
java.awt.DefaultFocusTraversalPolicy, javax.swing.SwingContainerOrderFocusTraversalPolicy
Imports
java.io.Serial, java.util.ArrayList, .List, sun.util.logging.PlatformLogger

A FocusTraversalPolicy that determines traversal order based on the order of child Components in a Container. From a particular focus cycle root, the policy makes a pre-order traversal of the Component hierarchy, and traverses a Container's children according to the ordering of the array returned by Container.getComponents(). Portions of the hierarchy that are not visible and displayable will not be searched.

By default, ContainerOrderFocusTraversalPolicy implicitly transfers focus down-cycle. That is, during normal forward focus traversal, the Component traversed after a focus cycle root will be the focus-cycle-root's default Component to focus. This behavior can be disabled using the setImplicitDownCycleTraversal method.

By default, methods of this class will return a Component only if it is visible, displayable, enabled, and focusable. Subclasses can modify this behavior by overriding the accept method.

This policy takes into account focus traversal policy providers. When searching for first/last/next/previous Component, if a focus traversal policy provider is encountered, its focus traversal policy is used to perform the search operation.

Author
David Mendenhall
Since
1.4
See Also
Container#getComponents

Field Summary

Modifier and TypeField and Description
private final int
private transient List<Component>
private transient Container
cachedRoot

Used by getComponentAfter and getComponentBefore for efficiency.

private final int
private boolean
private static final PlatformLogger
private static final long
serialVersionUID

Use serialVersionUID from JDK 1.4 for interoperability.

Constructor Summary

AccessConstructor and Description
public
ContainerOrderFocusTraversalPolicy()

Constructs a ContainerOrderFocusTraversalPolicy.

Method Summary

Modifier and TypeMethod and Description
protected boolean

Returns:

true if aComponent is visible, displayable, enabled, and focusable; false otherwise
accept
(Component
the Component whose fitness as a focus owner is to be tested
aComponent
)

Determines whether a Component is an acceptable choice as the new focus owner.

private void
public Component

Returns:

the Component that should receive the focus after aComponent, or null if no suitable Component can be found
getComponentAfter
(Container
a focus cycle root of aComponent or a focus traversal policy provider
aContainer
,
Component
a (possibly indirect) child of aContainer, or aContainer itself
aComponent
)

Implements abstract java.awt.FocusTraversalPolicy.getComponentAfter.

Returns the Component that should receive the focus after aComponent.

public Component

Returns:

the Component that should receive the focus before aComponent, or null if no suitable Component can be found
getComponentBefore
(Container
a focus cycle root of aComponent or focus traversal policy provider
aContainer
,
Component
a (possibly indirect) child of aContainer, or aContainer itself
aComponent
)

Implements abstract java.awt.FocusTraversalPolicy.getComponentBefore.

Returns the Component that should receive the focus before aComponent.

private Component
getComponentDownCycle(Component comp, int traversalDirection)

private int
public Component

Returns:

the default Component in the traversal cycle of aContainer, or null if no suitable Component can be found
getDefaultComponent
(Container
the focus cycle root or focus traversal policy provider whose default Component is to be returned
aContainer
)

Implements abstract java.awt.FocusTraversalPolicy.getDefaultComponent.

Returns the default Component to focus.

public Component

Returns:

the first Component in the traversal cycle of aContainer, or null if no suitable Component can be found
getFirstComponent
(Container
the focus cycle root or focus traversal policy provider whose first Component is to be returned
aContainer
)

Implements abstract java.awt.FocusTraversalPolicy.getFirstComponent.

Returns the first Component in the traversal cycle.

private List<Component>
public boolean

Returns:

whether this ContainerOrderFocusTraversalPolicy transfers focus down-cycle implicitly
getImplicitDownCycleTraversal
()

Returns whether this ContainerOrderFocusTraversalPolicy transfers focus down-cycle implicitly.

public Component

Returns:

the last Component in the traversal cycle of aContainer, or null if no suitable Component can be found
getLastComponent
(Container
the focus cycle root or focus traversal policy provider whose last Component is to be returned
aContainer
)

Implements abstract java.awt.FocusTraversalPolicy.getLastComponent.

Returns the last Component in the traversal cycle.

private Container
getTopmostProvider(Container focusCycleRoot, Component aComponent)

public void
setImplicitDownCycleTraversal(boolean
whether this ContainerOrderFocusTraversalPolicy transfers focus down-cycle implicitly
implicitDownCycleTraversal
)

Sets whether this ContainerOrderFocusTraversalPolicy transfers focus down-cycle implicitly.

Inherited from java.awt.FocusTraversalPolicy:
getInitialComponent

Field Detail

BACKWARD_TRAVERSALback to summary
private final int BACKWARD_TRAVERSAL
cachedCycleback to summary
private transient List<Component> cachedCycle
cachedRootback to summary
private transient Container cachedRoot

Used by getComponentAfter and getComponentBefore for efficiency. In order to maintain compliance with the specification of FocusTraversalPolicy, if traversal wraps, we should invoke getFirstComponent or getLastComponent. These methods may be overridden in subclasses to behave in a non-generic way. However, in the generic case, these methods will simply return the first or last Components of the sorted list, respectively. Since getComponentAfter and getComponentBefore have already built the list before determining that they need to invoke getFirstComponent or getLastComponent, the list should be reused if possible.

FORWARD_TRAVERSALback to summary
private final int FORWARD_TRAVERSAL
implicitDownCycleTraversalback to summary
private boolean implicitDownCycleTraversal
logback to summary
private static final PlatformLogger log
serialVersionUIDback to summary
private static final long serialVersionUID

Use serialVersionUID from JDK 1.4 for interoperability.

Annotations
@Serial

Constructor Detail

ContainerOrderFocusTraversalPolicyback to summary
public ContainerOrderFocusTraversalPolicy()

Constructs a ContainerOrderFocusTraversalPolicy.

Method Detail

acceptback to summary
protected boolean accept(Component aComponent)

Determines whether a Component is an acceptable choice as the new focus owner. By default, this method will accept a Component if and only if it is visible, displayable, enabled, and focusable.

Parameters
aComponent:Component

the Component whose fitness as a focus owner is to be tested

Returns:boolean

true if aComponent is visible, displayable, enabled, and focusable; false otherwise

enumerateCycleback to summary
private void enumerateCycle(Container container, List<Component> cycle)
getComponentAfterback to summary
public Component getComponentAfter(Container aContainer, Component aComponent)

Implements abstract java.awt.FocusTraversalPolicy.getComponentAfter.

Returns the Component that should receive the focus after aComponent. aContainer must be a focus cycle root of aComponent or a focus traversal policy provider.

By default, ContainerOrderFocusTraversalPolicy implicitly transfers focus down-cycle. That is, during normal forward focus traversal, the Component traversed after a focus cycle root will be the focus-cycle- root's default Component to focus. This behavior can be disabled using the setImplicitDownCycleTraversal method.

If aContainer is focus traversal policy provider, the focus is always transferred down-cycle.

Parameters
aContainer:Container

a focus cycle root of aComponent or a focus traversal policy provider

aComponent:Component

a (possibly indirect) child of aContainer, or aContainer itself

Returns:Component

the Component that should receive the focus after aComponent, or null if no suitable Component can be found

Exceptions
IllegalArgumentException:
if aContainer is not a focus cycle root of aComponent or focus traversal policy provider, or if either aContainer or aComponent is null
getComponentBeforeback to summary
public Component getComponentBefore(Container aContainer, Component aComponent)

Implements abstract java.awt.FocusTraversalPolicy.getComponentBefore.

Returns the Component that should receive the focus before aComponent. aContainer must be a focus cycle root of aComponent or a focus traversal policy provider.

Parameters
aContainer:Container

a focus cycle root of aComponent or focus traversal policy provider

aComponent:Component

a (possibly indirect) child of aContainer, or aContainer itself

Returns:Component

the Component that should receive the focus before aComponent, or null if no suitable Component can be found

Exceptions
IllegalArgumentException:
if aContainer is not a focus cycle root of aComponent or focus traversal policy provider, or if either aContainer or aComponent is null
getComponentDownCycleback to summary
private Component getComponentDownCycle(Component comp, int traversalDirection)
getComponentIndexback to summary
private int getComponentIndex(List<Component> cycle, Component aComponent)
getDefaultComponentback to summary
public Component getDefaultComponent(Container aContainer)

Implements abstract java.awt.FocusTraversalPolicy.getDefaultComponent.

Returns the default Component to focus. This Component will be the first to receive focus when traversing down into a new focus traversal cycle rooted at aContainer. The default implementation of this method returns the same Component as getFirstComponent.

Parameters
aContainer:Container

the focus cycle root or focus traversal policy provider whose default Component is to be returned

Returns:Component

the default Component in the traversal cycle of aContainer, or null if no suitable Component can be found

Exceptions
IllegalArgumentException:
if aContainer is null
See Also
getFirstComponent
getFirstComponentback to summary
public Component getFirstComponent(Container aContainer)

Implements abstract java.awt.FocusTraversalPolicy.getFirstComponent.

Returns the first Component in the traversal cycle. This method is used to determine the next Component to focus when traversal wraps in the forward direction.

Parameters
aContainer:Container

the focus cycle root or focus traversal policy provider whose first Component is to be returned

Returns:Component

the first Component in the traversal cycle of aContainer, or null if no suitable Component can be found

Exceptions
IllegalArgumentException:
if aContainer is null
getFocusTraversalCycleback to summary
private List<Component> getFocusTraversalCycle(Container aContainer)
getImplicitDownCycleTraversalback to summary
public boolean getImplicitDownCycleTraversal()

Returns whether this ContainerOrderFocusTraversalPolicy transfers focus down-cycle implicitly. If true, during normal forward focus traversal, the Component traversed after a focus cycle root will be the focus-cycle-root's default Component to focus. If false, the next Component in the focus traversal cycle rooted at the specified focus cycle root will be traversed instead.

Returns:boolean

whether this ContainerOrderFocusTraversalPolicy transfers focus down-cycle implicitly

See Also
setImplicitDownCycleTraversal, getFirstComponent
getLastComponentback to summary
public Component getLastComponent(Container aContainer)

Implements abstract java.awt.FocusTraversalPolicy.getLastComponent.

Returns the last Component in the traversal cycle. This method is used to determine the next Component to focus when traversal wraps in the reverse direction.

Parameters
aContainer:Container

the focus cycle root or focus traversal policy provider whose last Component is to be returned

Returns:Component

the last Component in the traversal cycle of aContainer, or null if no suitable Component can be found

Exceptions
IllegalArgumentException:
if aContainer is null
getTopmostProviderback to summary
private Container getTopmostProvider(Container focusCycleRoot, Component aComponent)
setImplicitDownCycleTraversalback to summary
public void setImplicitDownCycleTraversal(boolean implicitDownCycleTraversal)

Sets whether this ContainerOrderFocusTraversalPolicy transfers focus down-cycle implicitly. If true, during normal forward focus traversal, the Component traversed after a focus cycle root will be the focus-cycle-root's default Component to focus. If false, the next Component in the focus traversal cycle rooted at the specified focus cycle root will be traversed instead. The default value for this property is true.

Parameters
implicitDownCycleTraversal:boolean

whether this ContainerOrderFocusTraversalPolicy transfers focus down-cycle implicitly

See Also
getImplicitDownCycleTraversal, getFirstComponent