# Java: GridLayout

GridLayout lays out components in a rectangular grid, where all cells are equal size. GridLayout forces components to have the same size.

    JPanel content = new JPanel(new GridLayout(2,2));
    content.add(new JButton("Button 1"));
    content.add(new JButton("2"));
    content.add(new JLabel(""));  // for empty cell
    content.add(new JButton("This is button three"));

## To Create a GridLayout

There are three constructors:

       p.setLayout(new GridLayout());  // One row.  Columns expand.
       p.setLayout(new GridLayout(rows, cols));
       p.setLayout(new GridLayout(rows, cols, hgap, vgap));

with the following int parameters: rows is number of rows, cols is number of columns, hgap is horizontal space between components (in pixels), and vgap is vertical space between components (in pixels).
For example, this creates a panel with a grid layout of 4 rows and 3 columns. There are 5 pixels of horizontal space between components and 10 pixels of space between vertical components.

    JPanel p = new JPanel();
    p.setLayout(new GridLayout(4, 3, 5, 10));
    p.add(. . .);

## To add Components to a GridLayout

Use the `.add(. . .)` method to add components to a container with a GridLayout. You do not (can not) use the row and column to tell where to add the components -- add them in starting at the top left and going across the row first.

## Empty Cells

There is no way to leave a cell empty in a grid layout. Although it often works ok to leave the final cells empty, there are reports of problems, so you should fill out the last cells in the final row too. The easiest way to do this is to put an empty label in any cell you want to skip. Eg,

    p.add(new JLabel(""));