BoxLayoutTest.java Source code

Java tutorial

Introduction

Here is the source code for BoxLayoutTest.java

Source

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