Most
layout managers were defined back when
Java 1.0 was first released. Swing adds only one new general-purpose
layout manager, BoxLayout
. This layout manager is
useful for creating toolbars or vertical button bars. It lays out
components in a single row or column.
Although you can use BoxLayout
directly, Swing
includes a handy container called Box
that takes
care of the details for you. Every Box
uses
BoxLayout
, but you don’t really have to
worry about it; the Box
class includes some very useful methods
for laying out components.
You can create a
horizontal or vertical box using
Box
’s static methods.
Container horizontalBox = Box.createHorizontalBox( ); Container verticalBox = Box.createVerticalBox( );
Once the Box
is created, you can just
add( )
components as usual:
Container box = Box.createHorizontalBox( ); box.add(new JButton("In the"));
Box
includes several other static methods that
create special
invisible components that are handy
for BoxLayout
. The first of these is
glue
; glue is really space between
components in the Box
. When the
Box
is resized, glue expands or contracts as more
or less space is available. The other special invisible component
type is a strut
. Like glue, a strut represents space
between components, but it doesn’t resize.
The following example creates a
horizontal Box
(shown
in Figure 16.6) that includes both glue and
struts. Play around by resizing the window to see the effect of the
glue and the struts.
//file: Boxer.java import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Boxer extends JPanel { public static void main(String[] args) { JFrame f = new JFrame("Boxer"); f.addWindowListener(new WindowAdapter( ) { public void windowClosing(WindowEvent e) { System.exit(0); } }); f.setSize(250, 250); f.setLocation(200, 200); Container box = Box.createHorizontalBox( ); box.add(Box.createHorizontalGlue( )); box.add(new JButton("In the")); box.add(Box.createHorizontalGlue( )); box.add(new JButton("clearing")); box.add(Box.createHorizontalStrut(10)); box.add(new JButton("stands")); box.add(Box.createHorizontalStrut(10)); box.add(new JButton("a")); box.add(Box.createHorizontalGlue( )); box.add(new JButton("boxer")); box.add(Box.createHorizontalGlue( )); f.getContentPane( ).add(box, BorderLayout.CENTER); f.pack( ); f.setVisible(true); } }
Get Learning Java now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.