Java tutorial
import java.awt.Container; import java.awt.Frame; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.Box; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTextField; public class BoxLayoutTest extends JFrame implements ActionListener { private Box horizontalBox; private Box verticalBox; private Box horizontalStrutsAndGlueBox; private Box verticalStrutsAndGlueBox; private Box currentBox; private JCheckBox strutsAndGlueCheckBox; private JRadioButton horizontalButton; private JRadioButton verticalButton; public BoxLayoutTest() { setTitle("BoxLayoutTest"); setSize(300, 300); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); horizontalBox = createBox(true, false); verticalBox = createBox(false, false); horizontalStrutsAndGlueBox = createBox(true, true); verticalStrutsAndGlueBox = createBox(false, true); JPanel panel = new JPanel(); panel.setLayout(new GridLayout(3, 1, 3, 3)); ButtonGroup directionGroup = new ButtonGroup(); horizontalButton = addRadioButton(panel, directionGroup, "Horizontal", true); verticalButton = addRadioButton(panel, directionGroup, "Vertical", false); strutsAndGlueCheckBox = addCheckBox(panel, "Struts and Glue"); Container contentPane = getContentPane(); contentPane.add(panel, "South"); contentPane.add(horizontalBox, "Center"); currentBox = horizontalBox; } public Box createBox(boolean horizontal, boolean strutsAndGlue) { Box b; if (horizontal) b = Box.createHorizontalBox(); else b = Box.createVerticalBox(); b.add(new JLabel("Name: ")); b.add(new JTextField()); if (strutsAndGlue) if (horizontal) b.add(Box.createHorizontalStrut(5)); else b.add(Box.createVerticalStrut(5)); b.add(new JLabel("Password: ")); b.add(new JTextField()); if (strutsAndGlue) b.add(Box.createGlue()); b.add(new JButton("Ok")); return b; } public JRadioButton addRadioButton(JPanel p, ButtonGroup g, String name, boolean selected) { JRadioButton button = new JRadioButton(name, selected); button.addActionListener(this); g.add(button); p.add(button); return button; } public JCheckBox addCheckBox(JPanel p, String name) { JCheckBox checkBox = new JCheckBox(name); checkBox.addActionListener(this); p.add(checkBox); return checkBox; } public void actionPerformed(ActionEvent evt) { Container contentPane = getContentPane(); contentPane.remove(currentBox); if (horizontalButton.isSelected()) { if (strutsAndGlueCheckBox.isSelected()) { currentBox = horizontalStrutsAndGlueBox; } else { currentBox = horizontalBox; } } else { if (strutsAndGlueCheckBox.isSelected()) { currentBox = verticalStrutsAndGlueBox; } else { currentBox = verticalBox; } } contentPane.add(currentBox, "Center"); contentPane.validate(); repaint(); } public static void main(String[] args) { JFrame f = new BoxLayoutTest(); f.show(); } }