org.jdesktop.layout
public class GroupLayout extends Object implements LayoutManager2
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. |
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:
add
methods.
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);
.
GroupLayout
.
setAutocreateGaps()
method. Similarly you can use
the setAutocreateContainerGaps()
method to insert gaps
between the components and the container.
Nested Class Summary | |
---|---|
abstract class | GroupLayout.Group
Group provides for commonality between the two types of operations
supported by GroupLayout : laying out components one
after another (SequentialGroup ) or layout on top
of each other (ParallelGroup ). |
class | GroupLayout.ParallelGroup
A Group that lays out its elements on top of each
other. |
class | GroupLayout.SequentialGroup
A Group that lays out its elements sequentially, one
after another. |
Field Summary | |
---|---|
static int | BASELINE
Possible alignment type. |
static int | CENTER
Possible alignment type. |
static int | DEFAULT_SIZE
Possible value for the add methods that takes a Component.
|
static int | HORIZONTAL
Possible argument when linking sizes of components. |
static int | LEADING
Possible alignment type. |
static int | PREFERRED_SIZE
Possible value for the add methods that takes a Component.
|
static int | TRAILING
Possible alignment type. |
static int | VERTICAL
Possible argument when linking sizes of components. |
Constructor Summary | |
---|---|
GroupLayout(Container host)
Creates a GroupLayout for the specified JComponent.
|
Method Summary | |
---|---|
void | addLayoutComponent(String name, Component component)
Notification that a Component has been added to
the parent container. |
void | addLayoutComponent(Component component, Object constraints)
Notification that a Component has been added to
the parent container. |
GroupLayout.ParallelGroup | createBaselineGroup(boolean resizable, boolean anchorBaselineToTop)
Creates and returns a ParallelGroup that aligns it's
elements along the baseline.
|
GroupLayout.ParallelGroup | createParallelGroup()
Creates and returns a ParallelGroup with a
LEADING alignment. |
GroupLayout.ParallelGroup | createParallelGroup(int alignment)
Creates and returns an ParallelGroup . |
GroupLayout.ParallelGroup | createParallelGroup(int alignment, boolean resizable)
Creates and returns an ParallelGroup . |
GroupLayout.SequentialGroup | createSequentialGroup()
Creates and returns a SequentialGroup .
|
boolean | getAutocreateContainerGaps()
Returns whether or not gaps between the container and the
first/last components should automatically be created. |
boolean | getAutocreateGaps()
Returns true if gaps between components are automatically be created.
|
boolean | getHonorsVisibility()
Returns whether component visiblity is considered when sizing and
positioning components.
|
GroupLayout.Group | getHorizontalGroup()
Returns the Group that is responsible for
layout along the horizontal axis.
|
float | getLayoutAlignmentX(Container parent)
Returns the alignment along the x axis. |
float | getLayoutAlignmentY(Container parent)
Returns the alignment along the y axis. |
LayoutStyle | getLayoutStyle()
Returns the LayoutStyle instance to use
|
GroupLayout.Group | getVerticalGroup()
Returns the ParallelGroup that is responsible for
layout along the vertical axis.
|
void | invalidateLayout(Container parent)
Invalidates the layout, indicating that if the layout manager
has cached information it should be discarded.
|
void | layoutContainer(Container parent)
Lays out the specified container.
|
void | linkSize(Component[] components)
Forces the set of components to have the same size.
|
void | linkSize(Component[] components, int axis)
Forces the set of components to have the same size.
|
Dimension | maximumLayoutSize(Container parent)
Returns the maximum size for the specified container.
|
Dimension | minimumLayoutSize(Container parent)
Returns the minimum size for the specified container.
|
Dimension | preferredLayoutSize(Container parent)
Returns the preferred size for the specified container.
|
void | removeLayoutComponent(Component component)
Notification that a Component has been removed from
the parent container. |
void | replace(Component existingComponent, Component newComponent)
Removes an existing component replacing it with the specified component.
|
void | setAutocreateContainerGaps(boolean autocreatePadding)
Sets whether or not gaps between the container and the first/last
components should automatically be created. |
void | setAutocreateGaps(boolean autocreatePadding)
Sets whether or not a gap between components
should automatically be created. |
void | setHonorsVisibility(boolean honorsVisibility)
Sets whether component visiblity is considered when sizing and
positioning components. |
void | setHonorsVisibility(Component component, Boolean honorsVisibility)
Sets whether the component's visiblity is considered for
sizing and positioning. |
void | setHorizontalGroup(GroupLayout.Group group)
Sets the Group that is responsible for
layout along the horizontal axis.
|
void | setLayoutStyle(LayoutStyle layoutStyle)
Sets the LayoutStyle this GroupLayout is to use. |
void | setVerticalGroup(GroupLayout.Group group)
Sets the Group that is responsible for
layout along the vertical axis.
|
String | toString()
Returns a textual description of this GroupLayout. |
See Also: GroupLayout
See Also: GroupLayout
See Also: (java.awt.Component[],int)
See Also: GroupLayout
See Also: GroupLayout
See Also: (java.awt.Component[],int)
Parameters: host the Container to layout
Throws: IllegalArgumentException if host is null
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 component the Component
to be added
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 constraints Description of where to place the component.
ParallelGroup
that aligns it's
elements along the baseline.
Parameters: resizable whether the group is resizable anchorBaselineToTop whether the baseline is anchored to the top or bottom of the group
See Also: GroupLayout ParallelGroup
ParallelGroup
with a
LEADING
alignment. This is a cover method for the more
general createParallelGroup(int)
method.
Returns: a new ParallelGroup
See Also: GroupLayout
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, one
of LEADING
, TRAILING
,
CENTER
or BASELINE
.
Returns: a new ParallelGroup
Throws: IllegalArgumentException if alignment is not one of
LEADING
, TRAILING
,
CENTER
or BASELINE
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, one
of LEADING
, TRAILING
,
CENTER
or BASELINE
. resizable whether or not the group is resizable. If the group
is not resizable the min/max size will be the same as the
preferred.
Returns: a new ParallelGroup
Throws: IllegalArgumentException if alignment is not one of
LEADING
, TRAILING
,
CENTER
or BASELINE
SequentialGroup
.
Returns: a new SequentialGroup
Returns: whether or not the gaps between the container and the first/last components should automatically be created
Returns: true if gaps between components should automatically be created
Returns: whether component visiblity is considered when sizing and positioning components
Group
that is responsible for
layout along the horizontal axis.
Returns: ParallelGroup
responsible for layout along
the horizontal axis.
Parameters: parent Container hosting this LayoutManager
Returns: alignment
Throws: IllegalArgumentException if parent
is not
the same Container
that this was created with
Parameters: parent Container hosting this LayoutManager
Returns: alignment
Throws: IllegalArgumentException if parent
is not
the same Container
that this was created with
Returns: the LayoutStyle instance to use
ParallelGroup
that is responsible for
layout along the vertical axis.
Returns: ParallelGroup
responsible for layout along
the vertical axis.
Parameters: parent Container hosting this LayoutManager
Throws: IllegalArgumentException if parent
is not
the same Container
that this was created with
Parameters: parent the container to be laid out
Throws: IllegalStateException if any of the components added to this layout are not in both a horizontal and vertical group
Linked Components are not be resizable.
Parameters: components Components to force to have same size.
Throws: IllegalArgumentException if components
is
null, or contains null.
Linked Components are not be resizable.
Parameters: components Components to force to have same size. axis Axis to bind size, one of HORIZONTAL, VERTICAL or HORIZONTAL | VERTICAL
Throws: IllegalArgumentException if components
is
null, or contains null. IllegalArgumentException if axis
does not
contain HORIZONTAL
or VERTICAL
Parameters: parent the container to return size for
Throws: IllegalArgumentException if parent
is not
the same Container
that this was created with IllegalStateException if any of the components added to
this layout are not in both a horizontal and vertical group
See Also: java.awt.Container#getMaximumSize
Parameters: parent the container to return size for
Throws: IllegalArgumentException if parent
is not
the same Container
that this was created with IllegalStateException if any of the components added to
this layout are not in both a horizontal and vertical group
See Also: java.awt.Container#getMinimumSize
Parameters: parent the container to return size for
Throws: IllegalArgumentException if parent
is not
the same Container
that this was created with IllegalStateException if any of the components added to
this layout are not in both a horizontal and vertical group
See Also: java.awt.Container#getPreferredSize
Component
has been removed from
the parent container. You should not invoke this method
directly, instead invoke remove
on the parent
Container
.
Parameters: component the component to be removed
See Also: java.awt.Component#remove
Parameters: existingComponent the Component that should be removed and replaced with newComponent newComponent the Component to put in existingComponents place
Throws: IllegalArgumentException is either of the Components are null or if existingComponent is not being managed by this layout manager
Parameters: autocreatePadding whether or not to automatically create gaps between the container and first/last components.
SequentialGroup
a
gap between the two will automatically be created. The default
is false.
Parameters: autocreatePadding whether or not to automatically created a gap between components and the container
true
indicates that
non-visible components should not be treated as part of the
layout. A value of false
indicates that components should be
positioned and sized regardless of visibility.
A value of false
is useful when the visibility of components
is dynamically adjusted and you don't want surrounding components and
the sizing to change.
The specified value is used for components that do not have an explicit visibility specified.
The default is true
.
Parameters: honorsVisibility whether component visiblity is considered when sizing and positioning components
See Also: setHonorsVisibility
Boolean.TRUE
indicates that if component
is not visible it should
not be treated as part of the layout. A value of false
indicates that component
is positioned and sized
regardless of it's visibility. A value of null
indicates the value specified by the single argument method
setHonorsVisibility
should be used.
If component
is not a child of the Container
this
GroupLayout
is managing, it will be added to the
Container
.
Parameters: component the component honorsVisibility whether component
's visiblity should be
considered for sizing and positioning
Throws: IllegalArgumentException if component
is null
See Also: GroupLayout
Group
that is responsible for
layout along the horizontal axis.
Parameters: group Group
responsible for layout along
the horizontal axis
Throws: IllegalArgumentException if group is null
Parameters: layoutStyle the LayoutStyle to use
Group
that is responsible for
layout along the vertical axis.
Parameters: group Group
responsible for layout along
the vertical axis.
Throws: IllegalArgumentException if group is null.
Returns: textual description of this GroupLayout