Align your components in horizontal or vertical layout : BoxLayout « Swing « Java Tutorial

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;

import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main extends JFrame {
  public Main() {
    super("Demostrating BoxLayout");
    final int SIZE = 3;
    Container c = getContentPane();
    c.setLayout(new BorderLayout(30, 30));

    Box boxes[] = new Box[4];

    boxes[0] = Box.createHorizontalBox();
    boxes[1] = Box.createVerticalBox();
    boxes[2] = Box.createHorizontalBox();
    boxes[3] = Box.createVerticalBox();

    for (int i = 0; i < SIZE; i++)
      boxes[0].add(new JButton("boxes[0]: " + i));

    for (int i = 0; i < SIZE; i++) {
      boxes[1].add(new JButton("boxes[1]: " + i));

    for (int i = 0; i < SIZE; i++) {
      boxes[2].add(new JButton("boxes[2]: " + i));

    for (int i = 0; i < SIZE; i++) {
      boxes[3].add(Box.createRigidArea(new Dimension(12, 8)));
      boxes[3].add(new JButton("boxes[3]: " + i));

    JPanel panel = new JPanel();
    panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

    for (int i = 0; i < SIZE; i++) {
      panel.add(new JButton("panel: " + i));

    c.add(boxes[0], BorderLayout.NORTH);
    c.add(boxes[1], BorderLayout.EAST);
    c.add(boxes[2], BorderLayout.SOUTH);
    c.add(boxes[3], BorderLayout.WEST);
    c.add(panel, BorderLayout.CENTER);

    setSize(350, 300);

  public static void main(String args[]) {
    Main app = new Main();

14.87.1.Using a BoxLayout ManagerUsing a BoxLayout Manager
14.87.2.Creating a BoxLayoutCreating a BoxLayout
14.87.3.A Simple BoxLayout TestA Simple BoxLayout Test
14.87.4.Struts and GlueStruts and Glue
14.87.5.Y-Axis AlignmentY-Axis Alignment
14.87.6.X-Axis AlignmentX-Axis Alignment
14.87.7.Drawing Borders Within a BoxLayout-Managed ContainerDrawing Borders Within a BoxLayout-Managed Container
14.87.8.Separating Components in a Row or Column
14.87.9.Glue spreads the components as far apart as possible.
14.87.10.Strut spreads the components apart by a fixed distance
14.87.11.Laying Out Components in a Row or Column
14.87.12.A vertical box container arranges the components top-to-bottom aligned in their preferred sizes.
14.87.13.Vertical BoxLayout-managed container
14.87.14.Align your components in horizontal or vertical layout
14.87.15.BoxLayout: set a rigid area among our components.