Arranges components either in a row or in a column.
- Box class offers a container that uses BoxLayout as its default layout manager.
- BoxLayout works to honor each component's x and y alignment properties as well as its maximum size.
The BoxLayout class has only one constructor:
public BoxLayout(java.awt.Container target, int axis)
- 'target' argument specifies the container that needs to be laid out.
- 'axis' specifies the axis to lay out components along.
The value of axis can be one of the following:
- BoxLayout.X_AXIS
- BoxLayout.Y_AXIS
- BoxLayout.LINE_AXIS
- BoxLayout.PAGE_AXIS
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class BoxLayoutTest {
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("BoxLayout Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
BoxLayout boxLayout = new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS); // top to bottom
frame.setLayout(boxLayout);
frame.add(new JButton("Button 1"));
frame.add(new JButton("Button 2"));
frame.add(new JButton("Button 3"));
frame.pack();
frame.setVisible(true);
}
}
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.Box;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
public class TryBoxLayout {
public static void main(String[] args) {
JFrame aWindow = new JFrame("This is a Box Layout");
aWindow.setBounds(30, 30, 300, 300);
aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Create left column of radio buttons
Box left = Box.createVerticalBox();
ButtonGroup radioGroup = new ButtonGroup();
JRadioButton rbutton;
radioGroup.add(rbutton = new JRadioButton("Red"));
left.add(rbutton);
radioGroup.add(rbutton = new JRadioButton("Green"));
left.add(rbutton);
radioGroup.add(rbutton = new JRadioButton("Blue"));
left.add(rbutton);
radioGroup.add(rbutton = new JRadioButton("Yellow"));
left.add(rbutton);
Box right = Box.createVerticalBox();
right.add(new JCheckBox("A"));
right.add(new JCheckBox("B"));
right.add(new JCheckBox("C"));
Box top = Box.createHorizontalBox();
top.add(left);
top.add(right);
Container content = aWindow.getContentPane();
content.setLayout(new BorderLayout());
content.add(top, BorderLayout.CENTER);
aWindow.pack();
aWindow.setVisible(true);
}
}