APIdia Launch Partner
Top Description Fields Constructors Methods
java.awt

public Class GridLayout

extends Object
implements LayoutManager, Serializable
Class Inheritance
All Implemented Interfaces
java.io.Serializable, java.awt.LayoutManager
Imports
java.io.Serial

The GridLayout class is a layout manager that lays out a container's components in a rectangular grid. The container is divided into equal-sized rectangles, and one component is placed in each rectangle. For example, the following is a window that lays out six buttons into three rows and two columns:
import java.awt.Button; import java.awt.EventQueue; import java.awt.Frame; import java.awt.GridLayout; public class GridLayoutExample { public static void main(String[] args) throws Exception { EventQueue.invokeAndWait(() -> { Frame frame = new Frame("GridLayout"); frame.setLayout(new GridLayout(3, 2)); frame.add(new Button("1")); frame.add(new Button("2")); frame.add(new Button("3")); frame.add(new Button("4")); frame.add(new Button("5")); frame.add(new Button("6")); frame.setSize(200, 200); frame.setVisible(true); }); } }
import java.awt.Button;
import java.awt.EventQueue;
import java.awt.Frame;
import java.awt.GridLayout;

public class GridLayoutExample {

    public static void main(String[] args) throws Exception {
        EventQueue.invokeAndWait(() -> {
            Frame frame = new Frame("GridLayout");
            frame.setLayout(new GridLayout(3, 2));
            frame.add(new Button("1"));
            frame.add(new Button("2"));
            frame.add(new Button("3"));
            frame.add(new Button("4"));
            frame.add(new Button("5"));
            frame.add(new Button("6"));
            frame.setSize(200, 200);
            frame.setVisible(true);
        });
    }
}

If the container's ComponentOrientation property is horizontal and left-to-right, the above example produces the output shown in Figure 1. If the container's ComponentOrientation property is horizontal and right-to-left, the example produces the output shown in Figure 2.

Shows 6 buttons in rows of 2. Row 1 shows buttons 1 then 2.
       Row 2 shows buttons 3 then 4. Row 3 shows buttons 5 then 6.

Figure 1: Horizontal, Left-to-Right

Shows 6 buttons in rows of 2. Row 1 shows buttons 2 then 1.
       Row 2 shows buttons 4 then 3. Row 3 shows buttons 6 then 5.

Figure 2: Horizontal, Right-to-Left


When both the number of rows and the number of columns have been set to non-zero values, either by a constructor or by the setRows and setColumns methods, the number of columns specified is ignored. Instead, the number of columns is determined from the specified number of rows and the total number of components in the layout. So, for example, if three rows and two columns have been specified and nine components are added to the layout, they will be displayed as three rows of three columns. Specifying the number of columns affects the layout only when the number of rows is set to zero.

Author
Arthur van Hoff
Since
1.0

Field Summary

Modifier and TypeField and Description
pack-priv int
cols

This is the number of columns specified for the grid.

pack-priv int
hgap

This is the horizontal gap (in pixels) which specifies the space between columns.

pack-priv int
rows

This is the number of rows specified for the grid.

private static final long
serialVersionUID

Use serialVersionUID from JDK 1.6 for interoperability.

pack-priv int
vgap

This is the vertical gap (in pixels) which specifies the space between rows.

Constructor Summary

AccessConstructor and Description
public
GridLayout()

Creates a grid layout with a default of one column per component, in a single row.

public
GridLayout(int
the rows, with the value zero meaning any number of rows.
rows
,
int
the columns, with the value zero meaning any number of columns.
cols
)

Creates a grid layout with the specified number of rows and columns.

public
GridLayout(int
the rows, with the value zero meaning any number of rows
rows
,
int
the columns, with the value zero meaning any number of columns
cols
,
int
the horizontal gap
hgap
,
int
the vertical gap
vgap
)

Creates a grid layout with the specified number of rows and columns.

Method Summary

Modifier and TypeMethod and Description
public void
addLayoutComponent(String
the name of the component
name
,
Component
the component to be added
comp
)

Implements java.awt.LayoutManager.addLayoutComponent.

Adds the specified component with the specified name to the layout.

public int

Returns:

the number of columns in this layout
getColumns
()

Gets the number of columns in this layout.

public int

Returns:

the horizontal gap between components
getHgap
()

Gets the horizontal gap between components.

public int

Returns:

the number of rows in this layout
getRows
()

Gets the number of rows in this layout.

public int

Returns:

the vertical gap between components
getVgap
()

Gets the vertical gap between components.

public void
layoutContainer(Container
the container in which to do the layout
parent
)

Implements java.awt.LayoutManager.layoutContainer.

Lays out the specified container using this layout.

public Dimension

Returns:

the minimum dimensions needed to lay out the subcomponents of the specified container
minimumLayoutSize
(Container
the container in which to do the layout
parent
)

Implements java.awt.LayoutManager.minimumLayoutSize.

Determines the minimum size of the container argument using this grid layout.

public Dimension

Returns:

the preferred dimensions to lay out the subcomponents of the specified container
preferredLayoutSize
(Container
the container in which to do the layout
parent
)

Implements java.awt.LayoutManager.preferredLayoutSize.

Determines the preferred size of the container argument using this grid layout.

public void
removeLayoutComponent(Component
the component to be removed
comp
)

Implements java.awt.LayoutManager.removeLayoutComponent.

Removes the specified component from the layout.

public void
setColumns(int
the number of columns in this layout
cols
)

Sets the number of columns in this layout to the specified value.

public void
setHgap(int
the horizontal gap between components
hgap
)

Sets the horizontal gap between components to the specified value.

public void
setRows(int
the number of rows in this layout
rows
)

Sets the number of rows in this layout to the specified value.

public void
setVgap(int
the vertical gap between components
vgap
)

Sets the vertical gap between components to the specified value.

public String

Returns:

a string representation of this grid layout
toString
()

Overrides java.lang.Object.toString.

Returns the string representation of this grid layout's values.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAllwaitwaitwait

Field Detail

colsback to summary
pack-priv int cols

This is the number of columns specified for the grid. The number of columns can be changed at any time. This should be a non negative integer, where '0' means 'any number' meaning that the number of Columns in that dimension depends on the other dimension.

See Also
getColumns(), setColumns(int)
hgapback to summary
pack-priv int hgap

This is the horizontal gap (in pixels) which specifies the space between columns. They can be changed at any time. This should be a non-negative integer.

See Also
getHgap(), setHgap(int)
rowsback to summary
pack-priv int rows

This is the number of rows specified for the grid. The number of rows can be changed at any time. This should be a non negative integer, where '0' means 'any number' meaning that the number of Rows in that dimension depends on the other dimension.

See Also
getRows(), setRows(int)
serialVersionUIDback to summary
private static final long serialVersionUID

Use serialVersionUID from JDK 1.6 for interoperability.

Annotations
@Serial
vgapback to summary
pack-priv int vgap

This is the vertical gap (in pixels) which specifies the space between rows. They can be changed at any time. This should be a non negative integer.

See Also
getVgap(), setVgap(int)

Constructor Detail

GridLayoutback to summary
public GridLayout()

Creates a grid layout with a default of one column per component, in a single row.

Since
1.1
GridLayoutback to summary
public GridLayout(int rows, int cols)

Creates a grid layout with the specified number of rows and columns. All components in the layout are given 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.

Parameters
rows:int

the rows, with the value zero meaning any number of rows.

cols:int

the columns, with the value zero meaning any number of columns.

GridLayoutback to summary
public GridLayout(int rows, int cols, int hgap, int vgap)

Creates a grid layout with the specified number of rows and columns. All components in the layout are given equal size.

In addition, the horizontal and vertical gaps are set to the specified values. Horizontal gaps are placed between each of the columns. Vertical gaps are placed between each of the rows.

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.

All GridLayout constructors defer to this one.

Parameters
rows:int

the rows, with the value zero meaning any number of rows

cols:int

the columns, with the value zero meaning any number of columns

hgap:int

the horizontal gap

vgap:int

the vertical gap

Exceptions
IllegalArgumentException:
if the value of both rows and cols is set to zero

Method Detail

addLayoutComponentback to summary
public void addLayoutComponent(String name, Component comp)

Implements java.awt.LayoutManager.addLayoutComponent.

Adds the specified component with the specified name to the layout.

Parameters
name:String

the name of the component

comp:Component

the component to be added

getColumnsback to summary
public int getColumns()

Gets the number of columns in this layout.

Returns:int

the number of columns in this layout

Since
1.1
getHgapback to summary
public int getHgap()

Gets the horizontal gap between components.

Returns:int

the horizontal gap between components

Since
1.1
getRowsback to summary
public int getRows()

Gets the number of rows in this layout.

Returns:int

the number of rows in this layout

Since
1.1
getVgapback to summary
public int getVgap()

Gets the vertical gap between components.

Returns:int

the vertical gap between components

Since
1.1
layoutContainerback to summary
public void layoutContainer(Container parent)

Implements java.awt.LayoutManager.layoutContainer.

Lays out the specified container using this layout.

This method reshapes the components in the specified target container in order to satisfy the constraints of the GridLayout object.

The grid layout manager determines the size of individual components by dividing the free space in the container into equal-sized portions according to the number of rows and columns in the layout. The container's free space equals the container's size minus any insets and any specified horizontal or vertical gap. All components in a grid layout are given the same size.

Parameters
parent:Container

the container in which to do the layout

See Also
java.awt.Container, java.awt.Container#doLayout
minimumLayoutSizeback to summary
public Dimension minimumLayoutSize(Container parent)

Implements java.awt.LayoutManager.minimumLayoutSize.

Determines the minimum size of the container argument using this grid layout.

The minimum width of a grid layout is the largest minimum width of all of the components in the container times the number of columns, plus the horizontal padding times the number of columns minus one, plus the left and right insets of the target container.

The minimum height of a grid layout is the largest minimum height of all of the components in the container times the number of rows, plus the vertical padding times the number of rows minus one, plus the top and bottom insets of the target container.

Parameters
parent:Container

the container in which to do the layout

Returns:Dimension

the minimum dimensions needed to lay out the subcomponents of the specified container

See Also
java.awt.GridLayout#preferredLayoutSize, java.awt.Container#doLayout
preferredLayoutSizeback to summary
public Dimension preferredLayoutSize(Container parent)

Implements java.awt.LayoutManager.preferredLayoutSize.

Determines the preferred size of the container argument using this grid layout.

The preferred width of a grid layout is the largest preferred width of all of the components in the container times the number of columns, plus the horizontal padding times the number of columns minus one, plus the left and right insets of the target container.

The preferred height of a grid layout is the largest preferred height of all of the components in the container times the number of rows, plus the vertical padding times the number of rows minus one, plus the top and bottom insets of the target container.

Parameters
parent:Container

the container in which to do the layout

Returns:Dimension

the preferred dimensions to lay out the subcomponents of the specified container

See Also
java.awt.GridLayout#minimumLayoutSize, java.awt.Container#getPreferredSize()
removeLayoutComponentback to summary
public void removeLayoutComponent(Component comp)

Implements java.awt.LayoutManager.removeLayoutComponent.

Removes the specified component from the layout.

Parameters
comp:Component

the component to be removed

setColumnsback to summary
public void setColumns(int cols)

Sets the number of columns in this layout to the specified value. Setting the number of columns has no effect on the layout if the number of rows specified by a constructor or by the setRows method is non-zero. In that case, the number of columns displayed in the layout is determined by the total number of components and the number of rows specified.

Parameters
cols:int

the number of columns in this layout

Exceptions
IllegalArgumentException:
if the value of both rows and cols is set to zero
Since
1.1
setHgapback to summary
public void setHgap(int hgap)

Sets the horizontal gap between components to the specified value.

Parameters
hgap:int

the horizontal gap between components

Since
1.1
setRowsback to summary
public void setRows(int rows)

Sets the number of rows in this layout to the specified value.

Parameters
rows:int

the number of rows in this layout

Exceptions
IllegalArgumentException:
if the value of both rows and cols is set to zero
Since
1.1
setVgapback to summary
public void setVgap(int vgap)

Sets the vertical gap between components to the specified value.

Parameters
vgap:int

the vertical gap between components

Since
1.1
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Returns the string representation of this grid layout's values.

Returns:String

a string representation of this grid layout