LayoutFocusTraversalPolicypublic class LayoutFocusTraversalPolicy extends SortingFocusTraversalPolicy implements SerializableA 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. |
Fields Summary |
---|
private static final SwingDefaultFocusTraversalPolicy | fitnessTestPolicy |
Constructors Summary |
---|
public LayoutFocusTraversalPolicy()Constructs a LayoutFocusTraversalPolicy.
super(new LayoutComparator());
| LayoutFocusTraversalPolicy(Comparator c)Constructs a LayoutFocusTraversalPolicy with the passed in
Comparator .
super(c);
|
Methods Summary |
---|
protected boolean | accept(java.awt.Component aComponent)Determines whether the specified Component
is an acceptable choice as the new focus owner.
This method performs the following sequence of operations:
- Checks whether
aComponent is visible, displayable,
enabled, and focusable. If any of these properties is
false , this method returns false .
- If
aComponent is an instance of JTable ,
returns true .
- If
aComponent is an instance of JComboBox ,
then returns the value of
aComponent.getUI().isFocusTraversable(aComponent) .
- If
aComponent is a JComponent
with a JComponent.WHEN_FOCUSED
InputMap that is neither null
nor empty, returns true .
- Returns the value of
DefaultFocusTraversalPolicy.accept(aComponent) .
if (!super.accept(aComponent)) {
return false;
} else if (aComponent instanceof JTable) {
// JTable only has ancestor focus bindings, we thus force it
// to be focusable by returning true here.
return true;
} else if (aComponent instanceof JComboBox) {
JComboBox box = (JComboBox)aComponent;
return box.getUI().isFocusTraversable(box);
} else if (aComponent instanceof JComponent) {
JComponent jComponent = (JComponent)aComponent;
InputMap inputMap = jComponent.getInputMap(JComponent.WHEN_FOCUSED,
false);
while (inputMap != null && inputMap.size() == 0) {
inputMap = inputMap.getParent();
}
if (inputMap != null) {
return true;
}
// Delegate to the fitnessTestPolicy, this will test for the
// case where the developer has overriden isFocusTraversable to
// return true.
}
return fitnessTestPolicy.accept(aComponent);
| public java.awt.Component | getComponentAfter(java.awt.Container aContainer, java.awt.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.
if (aContainer == null || aComponent == null) {
throw new IllegalArgumentException("aContainer and aComponent cannot be null");
}
Comparator comparator = getComparator();
if (comparator instanceof LayoutComparator) {
((LayoutComparator)comparator).
setComponentOrientation(aContainer.
getComponentOrientation());
}
return super.getComponentAfter(aContainer, aComponent);
| public java.awt.Component | getComponentBefore(java.awt.Container aContainer, java.awt.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.
if (aContainer == null || aComponent == null) {
throw new IllegalArgumentException("aContainer and aComponent cannot be null");
}
Comparator comparator = getComparator();
if (comparator instanceof LayoutComparator) {
((LayoutComparator)comparator).
setComponentOrientation(aContainer.
getComponentOrientation());
}
return super.getComponentBefore(aContainer, aComponent);
| public java.awt.Component | getFirstComponent(java.awt.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.
if (aContainer == null) {
throw new IllegalArgumentException("aContainer cannot be null");
}
Comparator comparator = getComparator();
if (comparator instanceof LayoutComparator) {
((LayoutComparator)comparator).
setComponentOrientation(aContainer.
getComponentOrientation());
}
return super.getFirstComponent(aContainer);
| public java.awt.Component | getLastComponent(java.awt.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.
if (aContainer == null) {
throw new IllegalArgumentException("aContainer cannot be null");
}
Comparator comparator = getComparator();
if (comparator instanceof LayoutComparator) {
((LayoutComparator)comparator).
setComponentOrientation(aContainer.
getComponentOrientation());
}
return super.getLastComponent(aContainer);
| private void | readObject(java.io.ObjectInputStream in)
setComparator((Comparator)in.readObject());
setImplicitDownCycleTraversal(in.readBoolean());
| private void | writeObject(java.io.ObjectOutputStream out)
out.writeObject(getComparator());
out.writeBoolean(getImplicitDownCycleTraversal());
|
|