Swing JFC Java

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();
  }
}