 
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.