BoxLayoutDemo.java


BoxLayoutDemo.java

// Fig. 22.16-17: BoxLayoutDemo.java
// Demonstrating BoxLayout.
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.BoxLayout;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;

class BoxLayoutFrame extends JFrame 
{
   // set up GUI
   public BoxLayoutFrame()
   {
      super("Demonstrating BoxLayout");

      // create Box containers with BoxLayout
      Box horizontal1 = Box.createHorizontalBox();
      Box vertical1 = Box.createVerticalBox();
      Box horizontal2 = Box.createHorizontalBox();
      Box vertical2 = Box.createVerticalBox();

      final int SIZE = 3; // number of buttons on each Box

      // add buttons to Box horizontal1
      for (int count = 0; count < SIZE; count++)
         horizontal1.add(new JButton("Button " + count));

      // create strut and add buttons to Box vertical1
      for (int count = 0; count < SIZE; count++) 
      {
         vertical1.add(Box.createVerticalStrut(25));
         vertical1.add(new JButton("Button " + count));
      }

      // create horizontal glue and add buttons to Box horizontal2
      for (int count = 0; count < SIZE; count++) 
      {
         horizontal2.add(Box.createHorizontalGlue());
         horizontal2.add(new JButton("Button " + count));
      }

      // create rigid area and add buttons to Box vertical2
      for (int count = 0; count < SIZE; count++) 
      {
         vertical2.add(Box.createRigidArea(new Dimension(12, 8)));
         vertical2.add(new JButton("Button " + count));
      } 

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

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

      // create a JTabbedPane
      JTabbedPane tabs = new JTabbedPane(
         JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT); 

      // place each container on tabbed pane
      tabs.addTab("Horizontal Box", horizontal1);
      tabs.addTab("Vertical Box with Struts", vertical1);
      tabs.addTab("Horizontal Box with Glue", horizontal2);
      tabs.addTab("Vertical Box with Rigid Areas", vertical2);
      tabs.addTab("Vertical Box with Glue", panel);

      add(tabs); // place tabbed pane on frame
   } // end BoxLayoutFrame constructor
} // end class BoxLayoutFrame

public class BoxLayoutDemo
{
   public static void main(String[] args)
   { 
      BoxLayoutFrame boxLayoutFrame = new BoxLayoutFrame();  
      boxLayoutFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      boxLayoutFrame.setSize(400, 220); 
      boxLayoutFrame.setVisible(true); 
   } 
} // end class BoxLayoutDemo


Maintained by John Loomis, updated Mon Feb 27 12:10:05 2017