| java.lang.Object org.jdesktop.layout.GroupLayout
GroupLayout | public class GroupLayout implements LayoutManager2(Code) | | GroupLayout is a LayoutManager that hierarchically groups components to
achieve common, and not so common, layouts. Grouping is done by instances
of the Group class. GroupLayout supports two types of groups:
Sequential: | A sequential group positions its child
elements sequentially, one after another.
| Parallel: | A parallel group positions its child
elements in the same space on top of each other. Parallel groups
can also align the child elements along their baseline.
|
Each Group can contain any number of child groups, Components or gaps.
GroupLayout treats each axis independently. That is, there is a group
representing the horizontal axis, and a separate group representing the
vertical axis. The horizontal group is responsible for setting the x
and width of its contents, where as the vertical group is responsible for
setting the y and height of its contents.
The following code builds a simple layout consisting of two labels in
one column, followed by two textfields in the next column:
JComponent panel = ...;
GroupLayout layout = new GroupLayout(panel);
panel.setLayout(layout);
layout.setAutocreateGaps(true);
layout.setAutocreateContainerGaps(true);
GroupLayout.SequentialGroup hGroup = layout.createSequentialGroup();
hGroup.add(layout.createParallelGroup().add(label1).add(label2)).
add(layout.createParallelGroup().add(tf1).add(tf2));
layout.setHorizontalGroup(hGroup);
GroupLayout.SequentialGroup vGroup = layout.createSequentialGroup();
vGroup.add(layout.createParallelGroup(GroupLayout.BASELINE).add(label1).add(tf1)).
add(layout.createParallelGroup(GroupLayout.BASELINE).add(label2).add(tf2));
layout.setVerticalGroup(vGroup);
This layout consists of the following:
- The horizontal axis consists of a sequential group containing two
parallel groups. The first parallel group consists of the labels,
with the second parallel group consisting of the text fields.
- The vertical axis similarly consists of a sequential group
containing two parallel groups. The parallel groups align their
contents along the baseline. The first parallel group consists
of the first label and text field, and the second group consists
of the second label and text field.
There are a couple of things to notice in this code:
- You need not explicitly add the components to the container, this
is indirectly done by using one of the
add methods.
- The various
add methods of Groups return
themselves. This allows for easy chaining of invocations. For
example, group.add(label1).add(label2); is equivalent to
group.add(label1);group.add(label2); .
- There are no public constructors for the Groups, instead
use the create methods of
GroupLayout .
GroupLayout offer the ability to automatically insert the appropriate gap
between components. This can be turned on using the
setAutocreateGaps() method. Similarly you can use
the setAutocreateContainerGaps() method to insert gaps
between the components and the container.
version: $Revision$ author: Tomas Pavek author: Jan Stola author: Scott Violet |
Inner Class :abstract class Spring | |
Inner Class :abstract public class Group extends Spring | |
Inner Class :public class SequentialGroup extends Group | |
Inner Class :public class ParallelGroup extends Group | |
Inner Class :class ComponentSpring extends Spring | |
Inner Class :class PaddingSpring extends Spring | |
Inner Class :class GapSpring extends Spring | |
Field Summary | |
final public static int | BASELINE Possible alignment type. | final public static int | CENTER Possible alignment type. | final public static int | DEFAULT_SIZE Possible value for the add methods that takes a Component. | final public static int | HORIZONTAL Possible argument when linking sizes of components. | final public static int | LEADING Possible alignment type. | final public static int | PREFERRED_SIZE Possible value for the add methods that takes a Component. | final public static int | TRAILING Possible alignment type. | final public static int | VERTICAL Possible argument when linking sizes of components. |
Constructor Summary | |
public | GroupLayout(Container host) Creates a GroupLayout for the specified JComponent. |
DEFAULT_SIZE | final public static int DEFAULT_SIZE(Code) | | Possible value for the add methods that takes a Component.
Indicates the size from the component should be used.
|
LEADING | final public static int LEADING(Code) | | Possible alignment type. Indicates the elements should be
aligned to the origin. For the horizontal axis with a left to
right orientation this means aligned to the left.
See Also: GroupLayout.createParallelGroup(int) |
PREFERRED_SIZE | final public static int PREFERRED_SIZE(Code) | | Possible value for the add methods that takes a Component.
Indicates the preferred size should be used.
|
TRAILING | final public static int TRAILING(Code) | | Possible alignment type. Indicates the elements should be
aligned to the end. For the horizontal axis with a left to
right orientation this means aligned to the right.
See Also: GroupLayout.createParallelGroup(int) |
GroupLayout | public GroupLayout(Container host)(Code) | | Creates a GroupLayout for the specified JComponent.
Parameters: host - the Container to layout throws: IllegalArgumentException - if host is null |
addLayoutComponent | public void addLayoutComponent(String name, Component component)(Code) | | Notification that a Component has been added to
the parent container. Developers should not invoke this method
directly, instead you should use one of the Group
methods to add a Component .
Parameters: name - the string to be associated with the component Parameters: component - the Component to be added |
addLayoutComponent | public void addLayoutComponent(Component component, Object constraints)(Code) | | Notification that a Component has been added to
the parent container. You should not invoke this method
directly, instead you should use one of the Group
methods to add a Component .
Parameters: component - The component added Parameters: constraints - Description of where to place the component. |
createParallelGroup | public ParallelGroup createParallelGroup()(Code) | | Creates and returns a ParallelGroup with a
LEADING alignment. This is a cover method for the more
general createParallelGroup(int) method.
a new ParallelGroup See Also: GroupLayout.createParallelGroup(int) |
createParallelGroup | public ParallelGroup createParallelGroup(int alignment)(Code) | | Creates and returns an ParallelGroup . The alignment
specifies how children elements should be positioned when the
the parallel group is given more space than necessary. For example,
if a ParallelGroup with an alignment of TRAILING is given 100 pixels
and a child only needs 50 pixels, the child will be positioned at the
position 50.
Parameters: alignment - alignment for the elements of the Group, oneof LEADING , TRAILING ,CENTER or BASELINE . throws: IllegalArgumentException - if alignment is not one ofLEADING , TRAILING ,CENTER or BASELINE a new ParallelGroup |
createParallelGroup | public ParallelGroup createParallelGroup(int alignment, boolean resizable)(Code) | | Creates and returns an ParallelGroup . The alignment
specifies how children elements should be positioned when the
the parallel group is given more space than necessary. For example,
if a ParallelGroup with an alignment of TRAILING is given 100 pixels
and a child only needs 50 pixels, the child will be positioned at the
position 50.
Parameters: alignment - alignment for the elements of the Group, oneof LEADING , TRAILING ,CENTER or BASELINE . Parameters: resizable - whether or not the group is resizable. If the groupis not resizable the min/max size will be the same as thepreferred. throws: IllegalArgumentException - if alignment is not one ofLEADING , TRAILING ,CENTER or BASELINE a new ParallelGroup |
createSequentialGroup | public SequentialGroup createSequentialGroup()(Code) | | Creates and returns a SequentialGroup .
a new SequentialGroup |
getAutocreateContainerGaps | public boolean getAutocreateContainerGaps()(Code) | | Returns whether or not gaps between the container and the
first/last components should automatically be created. The default
is false.
whether or not the gaps between the container and thefirst/last components should automatically be created |
getAutocreateGaps | public boolean getAutocreateGaps()(Code) | | Returns true if gaps between components are automatically be created.
true if gaps between components should automatically be created |
getHorizontalGroup | public Group getHorizontalGroup()(Code) | | Returns the Group that is responsible for
layout along the horizontal axis.
ParallelGroup responsible for layout alongthe horizontal axis. |
getLayoutAlignmentX | public float getLayoutAlignmentX(Container parent)(Code) | | Returns the alignment along the x axis. This specifies how
the component would like to be aligned relative to other
components. The value should be a number between 0 and 1
where 0 represents alignment along the origin, 1 is aligned
the furthest away from the origin, 0.5 is centered, etc.
Parameters: parent - Container hosting this LayoutManager throws: IllegalArgumentException - if parent is notthe same Container that this was created with alignment |
getLayoutAlignmentY | public float getLayoutAlignmentY(Container parent)(Code) | | Returns the alignment along the y axis. This specifies how
the component would like to be aligned relative to other
components. The value should be a number between 0 and 1
where 0 represents alignment along the origin, 1 is aligned
the furthest away from the origin, 0.5 is centered, etc.
Parameters: parent - Container hosting this LayoutManager throws: IllegalArgumentException - if parent is notthe same Container that this was created with alignment |
getVerticalGroup | public Group getVerticalGroup()(Code) | | Returns the ParallelGroup that is responsible for
layout along the vertical axis.
ParallelGroup responsible for layout alongthe vertical axis. |
invalidateLayout | public void invalidateLayout(Container parent)(Code) | | Invalidates the layout, indicating that if the layout manager
has cached information it should be discarded.
Parameters: parent - Container hosting this LayoutManager throws: IllegalArgumentException - if parent is notthe same Container that this was created with |
layoutContainer | public void layoutContainer(Container parent)(Code) | | Lays out the specified container.
Parameters: parent - the container to be laid out throws: IllegalStateException - if any of the components added tothis layout are not in both a horizontal and vertical group |
linkSize | public void linkSize(Component[] components)(Code) | | Forces the set of components to have the same size.
This can be used multiple times to force
any number of components to share the same size.
Linked Components are not be resizable.
Parameters: components - Components to force to have same size. throws: IllegalArgumentException - if components isnull, or contains null. |
linkSize | public void linkSize(Component[] components, int axis)(Code) | | Forces the set of components to have the same size.
This can be used multiple times to force
any number of components to share the same size.
Linked Components are not be resizable.
Parameters: components - Components to force to have same size. Parameters: axis - Axis to bind size, one of HORIZONTAL, VERTICAL orHORIZONTAL | VERTICAL throws: IllegalArgumentException - if components isnull, or contains null. throws: IllegalArgumentException - if axis does notcontain HORIZONTAL or VERTICAL |
removeLayoutComponent | public void removeLayoutComponent(Component comp)(Code) | | Notification that a Component has been removed from
the parent container. You should not invoke this method
directly, instead invoke remove on the parent
Container .
Parameters: comp - the component to be removed See Also: java.awt.Component.remove |
replace | public void replace(Component existingComponent, Component newComponent)(Code) | | Removes an existing component replacing it with the specified component.
Parameters: existingComponent - the Component that should be removed andreplaced with newComponent Parameters: newComponent - the Component to put in existingComponents place throws: IllegalArgumentException - is either of the Components are null orif existingComponent is not being managed by this layout manager |
setAutocreateContainerGaps | public void setAutocreateContainerGaps(boolean autocreatePadding)(Code) | | Sets whether or not gaps between the container and the first/last
components should automatically be created. The default
is false.
Parameters: autocreatePadding - whether or not to automatically creategaps between the container and first/last components. |
setAutocreateGaps | public void setAutocreateGaps(boolean autocreatePadding)(Code) | | Sets whether or not a gap between components
should automatically be created. For example, if this is true
and you add two components to a SequentialGroup a
gap between the two will automatically be created. The default
is false.
Parameters: autocreatePadding - whether or not to automatically created a gapbetween components and the container |
setHorizontalGroup | public void setHorizontalGroup(Group group)(Code) | | Sets the Group that is responsible for
layout along the horizontal axis.
Parameters: group - Group responsible for layout alongthe horizontal axis throws: IllegalArgumentException - if group is null |
setVerticalGroup | public void setVerticalGroup(Group group)(Code) | | Sets the Group that is responsible for
layout along the vertical axis.
Parameters: group - Group responsible for layout alongthe vertical axis. throws: IllegalArgumentException - if group is null. |
toString | public String toString()(Code) | | Returns a textual description of this GroupLayout. The return value
is intended for debugging purposes only.
textual description of this GroupLayout |
|
|