- 所有已实现的接口:
-
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
- 参见:
-
Constructor Summary
ConstructorsConstructorDescription创建一个默认为每个组件一列的网格布局,位于单行中。GridLayout(int rows, int cols) 创建具有指定行数和列数的网格布局。GridLayout(int rows, int cols, int hgap, int vgap) 创建具有指定行数和列数的网格布局。 -
Method Summary
Modifier and TypeMethodDescriptionvoidaddLayoutComponent(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()返回此网格布局值的字符串表示形式。
-
Constructor Details
-
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的值都设置为零
-
-
Method Details
-
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
使用此网格布局确定容器参数的首选大小。网格布局的首选宽度是容器中所有组件的最大首选宽度乘以列数,加上水平填充乘以列数减一,再加上目标容器的左右插图。
网格布局的首选高度是容器中所有组件的最大首选高度乘以行数,加上垂直填充乘以行数减一,再加上目标容器的顶部和底部插图。
- 指定者:
-
preferredLayoutSize在接口LayoutManager中 - 参数:
-
parent- 要进行布局的容器 - 返回:
- 用于布置指定容器的子组件的首选尺寸
- 参见:
-
minimumLayoutSize
确定使用此网格布局的容器参数的最小大小。网格布局的最小宽度是容器中所有组件的最大最小宽度乘以列数,加上水平填充乘以列数减一,再加上目标容器的左右插图。
网格布局的最小高度是容器中所有组件的最大最小高度乘以行数,加上垂直填充乘以行数减一,再加上目标容器的顶部和底部插图。
- 指定者:
-
minimumLayoutSize在接口LayoutManager - 参数:
-
parent- 要进行布局的容器 - 返回:
- 指定容器的子组件布局所需的最小尺寸
- 参见:
-
layoutContainer
使用此布局对指定的容器进行布局。此方法重新调整指定目标容器中的组件,以满足
GridLayout对象的约束。网格布局管理器通过根据布局中的行数和列数将容器中的空闲空间分成相等大小的部分来确定各个组件的大小。容器的空闲空间等于容器的大小减去任何插图和任何指定的水平或垂直间隙。网格布局中的所有组件都具有相同的大小。
- 指定者:
-
layoutContainer在接口LayoutManager - 参数:
-
parent- 要进行布局的容器 - 参见:
-
toString
返回此网格布局值的字符串表示形式。
-