GridLayout(网格布局管理器)使用纵横线将容器分成 n 行 m 列大小相等的网格,每个网格中放置一个组件。添加到容器中的组件首先放置在第 1 行第 1 列(左上角)的网格中,然后在第 1 行的网格中从左向右依次放置其他组件。行满后,继续在下一行中从左到右放置组件。与 FlowLayout 不同的是,放置在 GirdLayout 布局管理器中的组件将自动占据网格的整个区域(每添加一个组件占据一个网格)。
接下来了解 GirdLayout 的构造方法,如下表所示。
方法声明 | 功能描述 |
---|---|
GridLayout() | 默认只有一行,每个组件占一列 |
GridLayout(int rows, int cols) | 指定容器的行数和列数 |
GridLayout(int rows, int cols, int hgap, int vgap) | 指定容器的行数和列数以及组件之间的水平、垂直间距 |
上表中列出了 GridLayout 的 3 个构造方法。其中,参数 rows 代表行数,cols 代表列数,hgap 和 vgap 规定水平和垂直方向的间隙。水平间隙指的是网格之间的水平距离,垂直间隙指的是网格之间的垂直距离。
接下来通过一个案例演示 FGridLayout 布局的用法,如下所示。
import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;
public class example04 {
public static void main(String[] args) {
//创建一个名为 GirdLayout 的窗体
Frame frame = new Frame("GridLayout");
//设置该窗体为 3*3 的网格
frame.setLayout(new GridLayout(3, 3));
//设置窗体大小
frame.setSize(300, 300);
frame.setLocation(400, 300);
//通过循环添加 9 个按钮到 GridLayout 中
for (int i = 1; i <= 9; i++) {
Button button = new Button("button" + i);
frame.add(button); //向窗体添加按钮
}
frame.setVisible(true);
}
}
运行成功,生成的窗口如下。
上述代码块中,Frame 窗口采用 GridLayout 布局管理器,设置了 9 个按钮组件,按钮组件按照编号从左到右、从上到下充满了整个容器。GridLayout 布局管理器的特点是组件的相对位置不随区域的缩放而改变,而组件的大小会随之改变,组件始终占据网格的整个区域。缺点就是总是忽略组件的最佳大小,所有组件的宽高都相同。