BoxLayout

Textbook Example

// BoxLayoutDemo.java
// Demonstrating BoxLayout.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class BoxLayoutDemo extends JFrame {
   public BoxLayoutDemo()
   {
      super( "Demostrating BoxLayout" );
      final int SIZE = 3;

      Container c = getContentPane();
      c.setLayout( new BorderLayout( 30, 30 ) );

      Box boxes[] = new Box[ 4 ];

      boxes[ 0 ] = Box.createHorizontalBox();
      boxes[ 1 ] = Box.createVerticalBox();
      boxes[ 2 ] = Box.createHorizontalBox();
      boxes[ 3 ] = Box.createVerticalBox();

      // add buttons to boxes[ 0 ]
      for ( int i = 0; i < SIZE; i++ )
         boxes[ 0 ].add( new JButton( "boxes[0]: " + i ) );

      // create strut and add buttons to boxes[ 1 ]
      for ( int i = 0; i < SIZE; i++ ) {
         boxes[ 1 ].add( Box.createVerticalStrut( 25 ) );
         boxes[ 1 ].add( new JButton( "boxes[1]: " + i ) );
      }

      // create horizontal glue and add buttons to boxes[ 2 ]
      for ( int i = 0; i < SIZE; i++ ) {
         boxes[ 2 ].add( Box.createHorizontalGlue() );
         boxes[ 2 ].add( new JButton( "boxes[2]: " + i ) );
      }

      // create rigid area and add buttons to boxes[ 3 ]
      for ( int i = 0; i < SIZE; i++ ) {
         boxes[ 3 ].add(
            Box.createRigidArea( new Dimension( 12, 8 ) ) );
         boxes[ 3 ].add( new JButton( "boxes[3]: " + i ) );
      }

      // create horizontal glue and add buttons to panel
      JPanel panel = new JPanel();
      panel.setLayout(
         new BoxLayout( panel, BoxLayout.Y_AXIS ) );

      for ( int i = 0; i < SIZE; i++ ) {
         panel.add( Box.createGlue() );
         panel.add( new JButton( "panel: " + i ) );
      }

      // place panels on frame
      c.add( boxes[ 0 ], BorderLayout.NORTH );
      c.add( boxes[ 1 ], BorderLayout.EAST );
      c.add( boxes[ 2 ], BorderLayout.SOUTH );
      c.add( boxes[ 3 ], BorderLayout.WEST );
      c.add( panel, BorderLayout.CENTER );

      setSize( 350, 300 );
      show();
   }

   public static void main( String args[] )
   {
      BoxLayoutDemo app = new BoxLayoutDemo();

      app.addWindowListener(
         new WindowAdapter() {
            public void windowClosing( WindowEvent e )
            {
               System.exit( 0 );
            }
         }
      );
   }
}

Tutorial Example

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class BoxWindow extends JFrame {
    boolean inAnApplet = true;
     
    public BoxWindow() {
        Container contentPane = getContentPane();
        contentPane.setLayout(new BoxLayout(contentPane,
                                            BoxLayout.Y_AXIS));
   
        addAButton("Button 1", contentPane);
        addAButton("2", contentPane);
        addAButton("Button 3", contentPane);
        addAButton("Long-Named Button 4", contentPane);
        addAButton("Button 5", contentPane);

        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                if (inAnApplet) {
                    dispose();
                } else {
                    System.exit(0);
                }
            }
        });
    }

    private void addAButton(String text, Container container) {
        JButton button = new JButton(text);
        button.setAlignmentX(Component.CENTER_ALIGNMENT);
        container.add(button);
    }

    public static void main(String args[]) {
        BoxWindow window = new BoxWindow();
        window.inAnApplet = false;

        window.setTitle("BoxLayout");
        window.pack();
        window.setVisible(true);
    }
}


Maintained by John Loomis, last updated 20 June 2000