javax.swing
Class SpringLayout

java.lang.Object
  extended by javax.swing.SpringLayout
All Implemented Interfaces:
LayoutManager, LayoutManager2

public class SpringLayout
extends Object
implements LayoutManager2

A very flexible layout manager. Components are laid out by defining the relationships between them. The relationships are expressed as Springs. You can attach a Spring for each edge of a component and link it to an edge of a different component. For example, you can say, the northern edge of component A should be attached to the southern edge of component B, and the space between them should be something between x and y pixels, and preferably z pixels.

While quite simple, this layout manager can be used to emulate most other layout managers, and can also be used to solve some layout problems, which would be hard to solve with other layout managers.


Nested Class Summary
static class SpringLayout.Constraints
          The constraints that define the relationships between components.
 
Field Summary
static String EAST
          The right edge of a component.
static String NORTH
          The top edge of a component.
static String SOUTH
          The bottom edge of a component.
static String WEST
          The left edge of a component.
 
Constructor Summary
SpringLayout()
          Creates a new SpringLayout.
 
Method Summary
 void addLayoutComponent(Component component, Object constraint)
          Adds a layout component and a constraint object to this layout.
 void addLayoutComponent(String name, Component c)
          Adds a layout component and a constraint object to this layout.
 Spring getConstraint(String edgeName, Component c)
          Returns the constraint of the edge named by edgeName.
 SpringLayout.Constraints getConstraints(Component c)
          Returns the SpringLayout.Constraints object associated with the specified component.
 float getLayoutAlignmentX(Container p)
          Returns the X alignment of the Container p.
 float getLayoutAlignmentY(Container p)
          Returns the Y alignment of the Container p.
 void invalidateLayout(Container p)
          Recalculate a possibly cached layout.
 void layoutContainer(Container p)
          Lays out the container p.
 Dimension maximumLayoutSize(Container p)
          Calculates the maximum size of the layed out container.
 Dimension minimumLayoutSize(Container p)
          Calculates the minimum size of the layed out container.
 Dimension preferredLayoutSize(Container p)
          Calculates the preferred size of the layed out container.
 void putConstraint(String e1, Component c1, int pad, String e2, Component c2)
          Attaches the edge e1 of component c1 to the edge e2 of component c2 width the fixed strut pad.
 void putConstraint(String e1, Component c1, Spring s, String e2, Component c2)
          Attaches the edge e1 of component c1 to the edge e2 of component c2 width the Spring s.
 void removeLayoutComponent(Component c)
          Removes a layout component.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

EAST

public static final String EAST
The right edge of a component.

See Also:
Constant Field Values

NORTH

public static final String NORTH
The top edge of a component.

See Also:
Constant Field Values

SOUTH

public static final String SOUTH
The bottom edge of a component.

See Also:
Constant Field Values

WEST

public static final String WEST
The left edge of a component.

See Also:
Constant Field Values
Constructor Detail

SpringLayout

public SpringLayout()
Creates a new SpringLayout.

Method Detail

addLayoutComponent

public void addLayoutComponent(Component component,
                               Object constraint)
Adds a layout component and a constraint object to this layout. This method is usually only called by a Containers add method.

Specified by:
addLayoutComponent in interface LayoutManager2
Parameters:
component - the component to be added.
constraint - the constraint to be set.

addLayoutComponent

public void addLayoutComponent(String name,
                               Component c)
Adds a layout component and a constraint object to this layout. This method is usually only called by a Containers add method. This method does nothing, since SpringLayout does not manage String-indexed components.

Specified by:
addLayoutComponent in interface LayoutManager
Parameters:
name - the name.
c - the component to be added.

getConstraint

public Spring getConstraint(String edgeName,
                            Component c)
Returns the constraint of the edge named by edgeName.

Parameters:
c - the component from which to get the constraint.
edgeName - the name of the edge, one of EAST, WEST, NORTH or SOUTH.
Returns:
the constraint of the edge edgeName of the component c.

getConstraints

public SpringLayout.Constraints getConstraints(Component c)
Returns the SpringLayout.Constraints object associated with the specified component.

Parameters:
c - the component for which to determine the constraint.
Returns:
the SpringLayout.Constraints object associated with the specified component.

getLayoutAlignmentX

public float getLayoutAlignmentX(Container p)
Returns the X alignment of the Container p.

Specified by:
getLayoutAlignmentX in interface LayoutManager2
Parameters:
p - the Container for which to determine the X alignment.
Returns:
always 0.0

getLayoutAlignmentY

public float getLayoutAlignmentY(Container p)
Returns the Y alignment of the Container p.

Specified by:
getLayoutAlignmentY in interface LayoutManager2
Parameters:
p - the Container for which to determine the Y alignment.
Returns:
always 0.0

invalidateLayout

public void invalidateLayout(Container p)
Recalculate a possibly cached layout.

Specified by:
invalidateLayout in interface LayoutManager2
Parameters:
p - the target container

layoutContainer

public void layoutContainer(Container p)
Lays out the container p.

Specified by:
layoutContainer in interface LayoutManager
Parameters:
p - the container to be laid out.

maximumLayoutSize

public Dimension maximumLayoutSize(Container p)
Calculates the maximum size of the layed out container. This respects the maximum sizes of all contained components.

Specified by:
maximumLayoutSize in interface LayoutManager2
Parameters:
p - the container to be laid out.
Returns:
the maximum size of the container.
See Also:
Component.getMaximumSize()

minimumLayoutSize

public Dimension minimumLayoutSize(Container p)
Calculates the minimum size of the layed out container. This respects the minimum sizes of all contained components.

Specified by:
minimumLayoutSize in interface LayoutManager
Parameters:
p - the container to be laid out.
Returns:
the minimum size of the container.
See Also:
LayoutManager.preferredLayoutSize(Container)

preferredLayoutSize

public Dimension preferredLayoutSize(Container p)
Calculates the preferred size of the layed out container. This respects the preferred sizes of all contained components.

Specified by:
preferredLayoutSize in interface LayoutManager
Parameters:
p - the container to be laid out.
Returns:
the preferred size of the container.
See Also:
LayoutManager.minimumLayoutSize(Container)

putConstraint

public void putConstraint(String e1,
                          Component c1,
                          int pad,
                          String e2,
                          Component c2)
Attaches the edge e1 of component c1 to the edge e2 of component c2 width the fixed strut pad.

Parameters:
e1 - the edge of component 1.
c1 - the component 1.
pad - the space between the components in pixels.
e2 - the edge of component 2.
c2 - the component 2.

putConstraint

public void putConstraint(String e1,
                          Component c1,
                          Spring s,
                          String e2,
                          Component c2)
Attaches the edge e1 of component c1 to the edge e2 of component c2 width the Spring s.

Parameters:
e1 - the edge of component 1.
c1 - the component 1.
s - the space between the components as a Spring object.
e2 - the edge of component 2.
c2 - the component 2.

removeLayoutComponent

public void removeLayoutComponent(Component c)
Removes a layout component.

Specified by:
removeLayoutComponent in interface LayoutManager
Parameters:
c - the layout component to remove.