Java Swing GridLayout Tutorial with Examples

In this tutorial, we will learn how to use GridLayout in GUI/swing based applications.
A GridLayout object places components in a grid of cells. Each component takes all the available space within its cell, and each cell is exactly the same size.

The GridLayout API

The GridLayout class constructors
  • GridLayout(int rows, int cols) - Creates a grid layout with the specified number of rows and columns. All components in the layout are given an equal size. One, but not both, of rows and cols can be zero, which means that any number of objects can be placed in a row or in a column.
  • GridLayout(int rows, int cols, int hgap, int vgap) - Creates a grid layout with the specified number of rows and columns. In addition, the horizontal and vertical gaps are set to the specified values. Horizontal gaps are places between each of the columns. Vertical gaps are placed between each of the rows.

Java Swing GridLayout Example

The following example shows a skeleton of a simple calculator tool. We put nineteen buttons and one label into the manager. Notice that each button is of the same size. 
Here is a complete example:
package net.javaguides.javaswing.examples;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.EventQueue;
import java.awt.GridLayout;

/**
 * Class demonstrates the usage of GridLayout manager.
 * @author javaguides.net
 *
 */
public class GridLayoutExample extends JFrame {

    private static final long serialVersionUID = 1L;

    public GridLayoutExample() {

        initUI();
    }

    private void initUI() {

        JPanel panel = new JPanel();

        panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        panel.setLayout(new GridLayout(5, 4, 5, 5));

        String[] buttons = {
            "Cls",
            "Bck",
            "",
            "Close",
            "7",
            "8",
            "9",
            "/",
            "4",
            "5",
            "6",
            "*",
            "1",
            "2",
            "3",
            "-",
            "0",
            ".",
            "=",
            "+"
        };

        for (int i = 0; i < buttons.length; i++) {
            if (i == 2) {
                panel.add(new JLabel(buttons[i]));
            } else {
                panel.add(new JButton(buttons[i]));
            }
        }

        add(panel);

        setTitle("GridLayout");
        setSize(350, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
    }

    public static void main(String[] args) {

        EventQueue.invokeLater(() -> {
            GridLayoutExample ex = new GridLayoutExample();
            ex.setVisible(true);
        });
    }
}
From the above code,
panel.setLayout(new GridLayout(5, 4, 5, 5));
We set the grid layout manager for the panel component. The layout manager takes four parameters. The number of rows, the number of columns, and the horizontal and vertical gaps between components.

Output

Related Swing Examples

  • Java Swing Exit Button - In this post, I show you how to exit a Swing application when clicking on the exit button.
  • Java Swing Combo Box Example - In this post, I show you how to create a combo box using a JComboBox component in swing-based applications.
  • Java Swing Slider Example - In this post, I show you how to create a slider using the JSlider component in swing-based applications.

Comments