The JavaTM Tutorial

| Start of Tutorial > Start of Trail > Start of Lesson | Search Feedback Form

Trail: Creating a GUI with JFC/Swing
Lesson: Laying Out Components Within a Container

## How to Use GridLayout

> Here's an applet that shows a `GridLayout` in action.

> This is a picture of the applet's GUI. To run the applet, click the picture. The applet will appear in a new browser window.

> A `GridLayout` 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. If you resize the `GridLayout` window, you'll see that the `GridLayout` changes the cell size so that the cells are as large as possible, given the space available to the container.

> Below is the code that creates the `GridLayout` and the components it manages. You can find the whole program in `GridWindow.java`. The program runs either within an applet (with the help of `AppletButton`) or as an application.

> >     Container contentPane = getContentPane();

> >     contentPane.setLayout(new GridLayout(0,2));

> >     contentPane.add(new JButton("Button 1"));
> >     contentPane.add(new JButton("2"));
> >     contentPane.add(new JButton("Button 3"));
> >     contentPane.add(new JButton("Long-Named Button 4"));
> >     contentPane.add(new JButton("Button 5"));

> The constructor tells the `GridLayout` class to create an instance that has two columns and as many rows as necessary.

### The GridLayout API

> The `GridLayout` class has two constructors:

> >     public GridLayout(int rows, int columns)
> >     public GridLayout(int rows, int columns,
> >                       int horizontalGap, int verticalGap)

> At least one of the `rows` and `columns` arguments must be nonzero. The `horizontalGap` and `verticalGap` arguments to the second constructor allow you to specify the number of pixels between cells. If you don't specify gaps, their values default to zero. In the applet above, any apparent gaps are the result of the buttons reserving extra space around their apparent display area.

### Examples that Use GridLayout

> The following table lists some of the examples that use grid layout.

> Example | Where Described | Notes
> --- | --- | ---
> `GridWindow` | This page | Uses a 2-column grid.
> `LabelDemo` | How to Use Labels | Uses a 3-row grid.
> `Converter` | The Anatomy of a Swing-Based Program | Uses the 4-argument `GridLayout` constructor.

| Start of Tutorial > Start of Trail > Start of Lesson | Search Feedback Form