The GridBagLayout class is a flexible layout
manager that aligns components vertically and horizontally,
without requiring that the components be of the same size.
Each GridBagLayout object maintains a dynamic
rectangular grid of cells, with each component occupying
one or more cells, called its display area.
Each component managed by a grid bag layout is associated
with an instance of
GridBagConstraints
that specifies how the component is laid out within its display area.
How a GridBagLayout object places a set of components
depends on the GridBagConstraints object associated
with each component, and on the minimum size
and the preferred size of the components' containers.
To use a grid bag layout effectively, you must customize one or more
of the GridBagConstraints objects that are associated
with its components. You customize a GridBagConstraints
object by setting one or more of its instance variables:
Specifies the cell at the upper left of the component's display area,
where the upper-left-most cell has address
gridx = 0,
gridy = 0.
Use GridBagConstraints.RELATIVE (the default value)
to specify that the component be just placed
just to the right of (for gridx)
or just below (for gridy)
the component that was added to the container
just before this component was added.
Specifies the number of cells in a row (for gridwidth)
or column (for gridheight)
in the component's display area.
The default value is 1.
Use GridBagConstraints.REMAINDER to specify
that the component be the last one in its row (for gridwidth)
or column (for gridheight).
Use GridBagConstraints.RELATIVE to specify
that the component be the next to last one
in its row (for gridwidth)
or column (for gridheight).
Used when the component's display area
is larger than the component's requested size
to determine whether (and how) to resize the component.
Possible values are
GridBagConstraints.NONE (the default),
GridBagConstraints.HORIZONTAL
(make the component wide enough to fill its display area
horizontally, but don't change its height),
GridBagConstraints.VERTICAL
(make the component tall enough to fill its display area
vertically, but don't change its width), and
GridBagConstraints.BOTH
(make the component fill its display area entirely).
Specifies the component's internal padding within the layout,
how much to add to the minimum size of the component.
The width of the component will be at least its minimum width
plus (ipadx * 2) pixels (since the padding
applies to both sides of the component). Similarly, the height of
the component will be at least the minimum height plus
(ipady * 2) pixels.
Used when the component is smaller than its display area
to determine where (within the display area) to place the component.
Valid values are
GridBagConstraints.CENTER (the default),
GridBagConstraints.NORTH,
GridBagConstraints.NORTHEAST,
GridBagConstraints.EAST,
GridBagConstraints.SOUTHEAST,
GridBagConstraints.SOUTH,
GridBagConstraints.SOUTHWEST,
GridBagConstraints.WEST, and
GridBagConstraints.NORTHWEST.
Used to determine how to distribute space, which is
important for specifying resizing behavior.
Unless you specify a weight for at least one component
in a row (weightx) and column (weighty),
all the components clump together in the center of their container.
This is because when the weight is zero (the default),
the GridBagLayout object puts any extra space
between its grid of cells and the edges of the container.
The following figure shows ten components (all buttons)
managed by a grid bag layout:
Each of the ten components has the fill field
of its associated GridBagConstraints object
set to GridBagConstraints.BOTH.
In addition, the components have the following non-default constraints:
defaultConstraints
This field holds a gridbag constraints instance
containing the default values, so if a component
does not have gridbag constraints associated with
it, then the component will be assigned a
copy of the defaultConstraints.
protected java.awt.GridBagLayoutInfo
layoutInfo
This field holds tha layout information
for the gridbag.
protected static int
MAXGRIDSIZE
The maximum number of grid positions (both horizontally and
vertically) that can be laid out by the grid bag layout.
protected static int
MINSIZE
The smallest grid that can be laid out by the grid bag layout.
This hashtable maintains the association between
a component and its gridbag constraints.
The Keys in comptable are the components and the
values are the instances of GridBagConstraints.
This field holds a gridbag constraints instance
containing the default values, so if a component
does not have gridbag constraints associated with
it, then the component will be assigned a
copy of the defaultConstraints.
This field holds tha layout information
for the gridbag. The information in this field
is based on the most recent validation of the
gridbag.
If layoutInfo is null
this indicates that there are no components in
the gridbag or if there are components, they have
not yet been validated.
This field holds the overrides to the column minimum
width. If this field is non-null the values are
applied to the gridbag after all of the minimum columns
widths have been calculated.
If columnWidths has more elements than the number of
columns, columns are added to the gridbag to match
the number of elements in columnWidth.
This field holds the overrides to the row minimum
heights. If this field is non-null the values are
applied to the gridbag after all of the minimum row
heights have been calculated.
If rowHeights has more elements than the number of
rows, rowa are added to the gridbag to match
the number of elements in rowHeights.
This field holds the overrides to the column weights.
If this field is non-null the values are
applied to the gridbag after all of the columns
weights have been calculated.
If columnWeights[i] > weight for column i, then
column i is assigned the weight in columnWeights[i].
If columnWeights has more elements than the number
of columns, the excess elements are ignored - they do
not cause more columns to be created.
rowWeights
public double[] rowWeights
This field holds the overrides to the row weights.
If this field is non-null the values are
applied to the gridbag after all of the rows
weights have been calculated.
If rowWeights[i] > weight for row i, then
row i is assigned the weight in rowWeights[i].
If rowWeights has more elements than the number
of rows, the excess elements are ignored - they do
not cause more rows to be created.
Retrieves the constraints for the specified component.
The return value is not a copy, but is the actual
GridBagConstraints object used by the layout mechanism.
Determines the origin of the layout grid.
Most applications do not call this method directly.
Returns:
the origin of the cell in the top-left
corner of the layout grid.
Since:
JDK1.1
getLayoutDimensions
public int[][] getLayoutDimensions()
Determines column widths and row heights for the layout grid.
Most applications do not call this method directly.
Returns:
an array of two arrays, containing the widths
of the layout columns and
the heights of the layout rows.
Since:
JDK1.1
getLayoutWeights
public double[][] getLayoutWeights()
Determines the weights of the layout grid's columns and rows.
Weights are used to calculate how much a given column or row
stretches beyond its preferred size, if the layout has extra
room to fill.
Most applications do not call this method directly.
Returns:
an array of two arrays, representing the
horizontal weights of the layout columns
and the vertical weights of the layout rows.
Determines which cell in the layout grid contains the point
specified by (x, y). Each cell is identified
by its column index (ranging from 0 to the number of columns
minus 1) and its row index (ranging from 0 to the number of
rows minus 1).
If the (x, y) point lies
outside the grid, the following rules are used.
The column index is returned as zero if x lies to the
left of the layout, and as the number of columns if x lies
to the right of the layout. The row index is returned as zero
if y lies above the layout,
and as the number of rows if y lies
below the layout.
Parameters:
x - the x coordinate of a point.
y - the y coordinate of a point.
Returns:
an ordered pair of indexes that indicate which cell
in the layout grid contains the point
(x, y).
public float getLayoutAlignmentX(Container parent)
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.
public float getLayoutAlignmentY(Container parent)
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.
Lays out the specified container using this grid bag layout.
This method reshapes components in the specified container in
order to satisfy the contraints of this GridBagLayout
object.
Most applications do not call this method directly.
Submit a bug or feature For further API reference and developer documentation, see Java 2 SDK SE Developer Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Java, Java 2D, and JDBC are trademarks or registered trademarks of Sun Microsystems, Inc. in the US and other countries. Copyright 1993-2001 Sun Microsystems, Inc. 901 San Antonio Road Palo Alto, California, 94303, U.S.A. All Rights Reserved.