2.5. Layout Management
Some containers, such as JTabbedPane and
JSplitPane, define a particular arrangement for
their children. Other containers such as
JPanel (and JFrame,
JDialog, and other top-level containers that use
JPanel as their default content pane) do not
define any particular arrangement. When working with
containers of this type, you must specify a
LayoutManager object to arrange the children
within the container.
AWT and Swing include various implementations of the
java.awt.LayoutManager interface. Each
arranges components in a different way.
Table 2-5 lists the layout managers
defined by AWT. Swing applications often rely on these AWT layout
managers, but Swing also defines some of its own, which are listed
in Table 2-6.
Figure 2-2 shows how some of these
layout managers arrange their children.
Table 2-5. AWT Layout Managers
Layout Manager |
Description |
BorderLayout |
Lays out a maximum of five components: one along each of
the four borders of the container and one in the
center. When using this layout manager, you must add
components to the container using a two-argument version
of the add() method. The constraint
argument should be one of the strings "North", "East",
"South", "West", or "Center". Despite the simplicity of
this layout system, this layout manager is used quite
often.
|
CardLayout |
Makes each component as large as the container and
displays only one at a time. Various methods change the
currently displayed component.
|
FlowLayout |
Arranges components like words on a page: from left to
right in rows and then top to bottom as each row fills
up. Rows may be left, center, or right justified.
|
GridBagLayout |
A flexible layout manager that arranges components in a
grid with variable-sized cells. Allows explicit control
over the way each component is resized when the
container changes size. Requires a complex constraints
set specified with the GridBagConstraints
object.
|
GridLayout |
Makes all components the same size and arranges them in
a grid of specified dimensions.
|
Figure 2-2. Layout managers
Table 2-6. Swing Layout Managers
Layout Manager |
Description |
BoxLayout |
The layout manager used by the
Box container. It arranges its
children into either a row or a column. It uses the
glue and strut components returned by static
Box
methods to display stretchy and rigid spaces between the
children.
|
OverlayLayout |
An obscure and infrequently used layout manager that
overlaps its children
based on the children's alignment values specified with
the setAlignmentX() and
setAlignmentY() methods inherited
from JComponent. Used by
AbstractButton.
|
ScrollPaneLayout |
A specialized layout manager used by
JScrollPane. Not typically useful
for general-purpose layouts.
|
ViewportLayout |
A specialized layout manager used by
JViewport. Not useful for
general-purpose layouts.
|
Some layout managers require additional information about the
components they are to arrange. This information takes the form
of a constraint string or constraint object passed to the
add() method when the component is added to
its container. java.awt.BorderLayout is the
most commonly used of these layout managers: its constraint
object is a string that specifies where the child should be
positioned within the container.
Example 2-1 showed a typical use of
BorderLayout.
Every AWT and Swing container has a default layout manager. If
you explicitly set the layout manager to
null, however, you can arrange your
components using hardcoded sizes and positions. Set the size
and position with methods such as setSize()
and setLocation(). However, hardcoding the layout of your components makes your GUI less
portable, harder to customize, and harder to translate into
other languages.
| | |
2.4. Containers and Containment | | 2.6. Event Handling |
Copyright © 2001 O'Reilly & Associates. All rights reserved.
|
|