- 所有已实现的接口:
LayoutManager,Serializable
GridLayout 类是一个布局管理器,它在矩形网格中布置容器的组件。容器被分成大小相等的矩形,每个矩形中放置一个组件。例如,下面是一个将六个按钮布局为三行两列的小程序:
import java.awt.*;
import java.applet.Applet;
public class ButtonGrid extends Applet {
public void init() {
setLayout(new GridLayout(3,2));
add(new Button("1"));
add(new Button("2"));
add(new Button("3"));
add(new Button("4"));
add(new Button("5"));
add(new Button("6"));
}
}
如果容器的 ComponentOrientation 属性是水平且从左到右,则上述示例会生成图 1 中所示的输出。如果容器的 ComponentOrientation 属性是水平且从右到左,则该示例会生成图 2 中所示的输出。

图 1:水平,从左到右

图 2:水平,从右到左
当行数和列数均已通过构造函数或 setRows 和 setColumns 方法设置为非零值时,指定的列数将被忽略。相反,列数由指定的行数和布局中的组件总数确定。因此,例如,如果指定了三行两列并将九个组件添加到布局中,它们将显示为三行三列。仅当行数设置为零时,指定列数才会影响布局。
- 自从:
- 1.0
- 参见:
-
构造方法总结
构造方法构造方法描述创建一个网格布局,默认情况下每个组件在一行中有一列。GridLayout(int rows, int cols) 创建具有指定行数和列数的网格布局。GridLayout(int rows, int cols, int hgap, int vgap) 创建具有指定行数和列数的网格布局。 -
方法总结
修饰符和类型方法描述voidaddLayoutComponent(String name, Component comp) 将具有指定名称的指定组件添加到布局中。int获取此布局中的列数。intgetHgap()获取组件之间的水平间距。intgetRows()获取此布局中的行数。intgetVgap()获取组件之间的垂直间距。voidlayoutContainer(Container parent) 使用此布局布置指定的容器。minimumLayoutSize(Container parent) 使用此网格布局确定容器参数的最小大小。preferredLayoutSize(Container parent) 使用此网格布局确定容器参数的首选大小。void从布局中移除指定的组件。voidsetColumns(int cols) 将此布局中的列数设置为指定值。voidsetHgap(int hgap) 将组件之间的水平间距设置为指定值。voidsetRows(int rows) 将此布局中的行数设置为指定值。voidsetVgap(int vgap) 将组件之间的垂直间隙设置为指定值。toString()返回此网格布局值的字符串表示形式。
-
构造方法详细信息
-
GridLayout
public GridLayout()创建一个网格布局,默认情况下每个组件在一行中有一列。- 自从:
- 1.1
-
GridLayout
public GridLayout(int rows, int cols) 创建具有指定行数和列数的网格布局。布局中的所有组件都具有相同的大小。rows和cols中的一个(但不是两个)可以为零,这意味着可以将任意数量的对象放置在一行或一列中。- 参数:
rows- 行,值为零表示任意数量的行。cols- 列,值为零表示任意数量的列。
-
GridLayout
public GridLayout(int rows, int cols, int hgap, int vgap) 创建具有指定行数和列数的网格布局。布局中的所有组件都具有相同的大小。此外,水平和垂直间隙设置为指定值。每列之间放置水平间隙。每行之间放置垂直间隙。
rows和cols中的一个(但不是两个)可以为零,这意味着可以将任意数量的对象放置在一行或一列中。所有
GridLayout构造函数都遵循这个。- 参数:
rows- 行,值为零表示任意数量的行cols- 列,值为零表示任意数量的列hgap- 水平间隙vgap- 垂直间隙- 抛出:
IllegalArgumentException- 如果rows和cols的值都设置为零
-
-
方法详情
-
getRows
public int getRows()获取此布局中的行数。- 返回:
- 此布局中的行数
- 自从:
- 1.1
-
setRows
public void setRows(int rows) 将此布局中的行数设置为指定值。- 参数:
rows- 此布局中的行数- 抛出:
IllegalArgumentException- 如果rows和cols的值都设置为零- 自从:
- 1.1
-
getColumns
public int getColumns()获取此布局中的列数。- 返回:
- 此布局中的列数
- 自从:
- 1.1
-
setColumns
public void setColumns(int cols) 将此布局中的列数设置为指定值。如果构造函数或setRows方法指定的行数不为零,则设置列数对布局没有影响。在这种情况下,布局中显示的列数由组件总数和指定的行数决定。- 参数:
cols- 此布局中的列数- 抛出:
IllegalArgumentException- 如果rows和cols的值都设置为零- 自从:
- 1.1
-
getHgap
public int getHgap()获取组件之间的水平间距。- 返回:
- 组件之间的水平间隙
- 自从:
- 1.1
-
setHgap
public void setHgap(int hgap) 将组件之间的水平间距设置为指定值。- 参数:
hgap- 组件之间的水平间隙- 自从:
- 1.1
-
getVgap
public int getVgap()获取组件之间的垂直间距。- 返回:
- 组件之间的垂直间隙
- 自从:
- 1.1
-
setVgap
public void setVgap(int vgap) 将组件之间的垂直间隙设置为指定值。- 参数:
vgap- 组件之间的垂直间隙- 自从:
- 1.1
-
addLayoutComponent
将具有指定名称的指定组件添加到布局中。- 指定者:
addLayoutComponent在接口LayoutManager中- 参数:
name- 组件名称comp- 要添加的组件
-
removeLayoutComponent
从布局中移除指定的组件。- 指定者:
removeLayoutComponent在接口LayoutManager中- 参数:
comp- 要删除的组件
-
preferredLayoutSize
使用此网格布局确定容器参数的首选大小。网格布局的首选宽度是容器中所有组件的最大首选宽度乘以列数,加上水平填充乘以列数减一,再加上目标容器的左右insets。
网格布局的首选高度是容器中所有组件的最大首选高度乘以行数,加上垂直填充乘以行数减一,再加上目标容器的顶部和底部insets。
- 指定者:
preferredLayoutSize在接口LayoutManager中- 参数:
parent- 进行布局的容器- 返回:
- 用于布置指定容器的子组件的首选尺寸
- 参见:
-
minimumLayoutSize
使用此网格布局确定容器参数的最小大小。网格布局的最小宽度是容器中所有组件的最大最小宽度乘以列数,加上水平填充乘以列数减一,再加上目标容器的左右 insets。
网格布局的最小高度是容器中所有组件的最大最小高度乘以行数,加上垂直填充乘以行数减一,再加上目标容器的顶部和底部insets。
- 指定者:
minimumLayoutSize在接口LayoutManager中- 参数:
parent- 进行布局的容器- 返回:
- 布置指定容器的子组件所需的最小尺寸
- 参见:
-
layoutContainer
使用此布局布置指定的容器。此方法重塑指定目标容器中的组件以满足
GridLayout对象的约束。网格布局管理器通过根据布局中的行数和列数将容器中的可用空间划分为大小相等的部分来确定各个组件的大小。容器的可用空间等于容器的大小减去任何insets和任何指定的水平或垂直间隙。网格布局中的所有组件都具有相同的大小。
- 指定者:
layoutContainer在接口LayoutManager中- 参数:
parent- 进行布局的容器- 参见:
-
toString
返回此网格布局值的字符串表示形式。
-