LayoutFocusTraversalPolicy (Java SE 14 & JDK 14)
Description: declaration: module: java.desktop, package: javax.swing, class: LayoutFocusTraversalPolicy
Keywords: javax.swing.LayoutFocusTraversalPolicy class

Module java.desktop
Package javax.swing

# Class LayoutFocusTraversalPolicy

java.lang.Object
java.awt.FocusTraversalPolicy
javax.swing.InternalFrameFocusTraversalPolicy
javax.swing.SortingFocusTraversalPolicy
javax.swing.LayoutFocusTraversalPolicy

All Implemented Interfaces:
  `Serializable`

    public class LayoutFocusTraversalPolicy
    extends SortingFocusTraversalPolicy
    implements Serializable

A SortingFocusTraversalPolicy which sorts Components based on their size, position, and orientation. Based on their size and position, Components are roughly categorized into rows and columns. For a Container with horizontal orientation, columns run left-to-right or right-to-left, and rows run top- to-bottom. For a Container with vertical orientation, columns run top-to- bottom and rows run left-to-right or right-to-left. See `ComponentOrientation` for more information. All columns in a row are fully traversed before proceeding to the next row.

Since:
  1.4
See Also:
  `ComponentOrientation`

- ## Constructor Summary

  Constructors
  Constructor | Description
  --- | ---
  `LayoutFocusTraversalPolicy()` | Constructs a LayoutFocusTraversalPolicy.

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `protected boolean` | `accept​(Component aComponent)` | Determines whether the specified `Component` is an acceptable choice as the new focus owner.
  `Component` | `getComponentAfter​(Container aContainer, Component aComponent)` | Returns the Component that should receive the focus after aComponent.
  `Component` | `getComponentBefore​(Container aContainer, Component aComponent)` | Returns the Component that should receive the focus before aComponent.
  `Component` | `getFirstComponent​(Container aContainer)` | Returns the first Component in the traversal cycle.
  `Component` | `getLastComponent​(Container aContainer)` | Returns the last Component in the traversal cycle.

  ### Methods declared in class javax.swing.SortingFocusTraversalPolicy

  `getComparator, getDefaultComponent, getImplicitDownCycleTraversal, setComparator, setImplicitDownCycleTraversal`

  ### Methods declared in class javax.swing.InternalFrameFocusTraversalPolicy

  `getInitialComponent`

  ### Methods declared in class java.awt.FocusTraversalPolicy

  `getInitialComponent`

  ### Methods declared in class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### LayoutFocusTraversalPolicy

    public LayoutFocusTraversalPolicy()
    Constructs a LayoutFocusTraversalPolicy.

- ## Method Details

  - ### getComponentAfter

    public Component getComponentAfter​(Container aContainer, Component aComponent)
    Returns the Component that should receive the focus after aComponent. aContainer must be a focus cycle root of aComponent.

    By default, LayoutFocusTraversalPolicy implicitly transfers focus down- cycle. That is, during normal 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.

    Overrides:
      `getComponentAfter` in class `SortingFocusTraversalPolicy`
    Parameters:
      `aContainer` - a focus cycle root of aComponent or a focus traversal policy provider
      `aComponent` - a (possibly indirect) child of aContainer, or aContainer itself
    Returns:
      the Component that should receive the focus after aComponent, or null if no suitable Component can be found
    Throws:
      `IllegalArgumentException` - if aContainer is not a focus cycle root of aComponent or a focus traversal policy provider, or if either aContainer or aComponent is null

  - ### getComponentBefore

    public Component getComponentBefore​(Container aContainer, Component aComponent)
    Returns the Component that should receive the focus before aComponent. aContainer must be a focus cycle root of aComponent.

    By default, LayoutFocusTraversalPolicy implicitly transfers focus down- cycle. That is, during normal 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.

    Overrides:
      `getComponentBefore` in class `SortingFocusTraversalPolicy`
    Parameters:
      `aContainer` - a focus cycle root of aComponent or a focus traversal policy provider
      `aComponent` - a (possibly indirect) child of aContainer, or aContainer itself
    Returns:
      the Component that should receive the focus before aComponent, or null if no suitable Component can be found
    Throws:
      `IllegalArgumentException` - if aContainer is not a focus cycle root of aComponent or a focus traversal policy provider, or if either aContainer or aComponent is null

  - ### getFirstComponent

    public Component getFirstComponent​(Container aContainer)
    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.
    Overrides:
      `getFirstComponent` in class `SortingFocusTraversalPolicy`
    Parameters:
      `aContainer` - a focus cycle root of aComponent or a focus traversal policy provider whose first Component is to be returned
    Returns:
      the first Component in the traversal cycle of aContainer, or null if no suitable Component can be found
    Throws:
      `IllegalArgumentException` - if aContainer is null

  - ### getLastComponent

    public Component getLastComponent​(Container aContainer)
    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.
    Overrides:
      `getLastComponent` in class `SortingFocusTraversalPolicy`
    Parameters:
      `aContainer` - a focus cycle root of aComponent or a focus traversal policy provider whose last Component is to be returned
    Returns:
      the last Component in the traversal cycle of aContainer, or null if no suitable Component can be found
    Throws:
      `IllegalArgumentException` - if aContainer is null

  - ### accept

    protected boolean accept​(Component aComponent)
    Determines whether the specified `Component` is an acceptable choice as the new focus owner. This method performs the following sequence of operations:
    1. Checks whether `aComponent` is visible, displayable, enabled, and focusable. If any of these properties is `false`, this method returns `false`.
    2. If `aComponent` is an instance of `JTable`, returns `true`.
    3. If `aComponent` is an instance of `JComboBox`, then returns the value of `aComponent.getUI().isFocusTraversable(aComponent)`.
    4. If `aComponent` is a `JComponent` with a `JComponent.WHEN_FOCUSED` `InputMap` that is neither `null` nor empty, returns `true`.
    5. Returns the value of `DefaultFocusTraversalPolicy.accept(aComponent)`.
    Overrides:
      `accept` in class `SortingFocusTraversalPolicy`
    Parameters:
      `aComponent` - the `Component` whose fitness as a focus owner is to be tested
    Returns:
      `true` if `aComponent` is a valid choice for a focus owner; otherwise `false`
    See Also:
      `Component.isVisible()`, `Component.isDisplayable()`, `Component.isEnabled()`, `Component.isFocusable()`, `ComboBoxUI.isFocusTraversable(javax.swing.JComboBox<?>)`, `JComponent.getInputMap(int)`, `DefaultFocusTraversalPolicy.accept(java.awt.Component)`