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 布局的用法,如下所示。

    1. import java.awt.Button;
    2. import java.awt.Frame;
    3. import java.awt.GridLayout;
    4. public class example04 {
    5. public static void main(String[] args) {
    6. //创建一个名为 GirdLayout 的窗体
    7. Frame frame = new Frame("GridLayout");
    8. //设置该窗体为 3*3 的网格
    9. frame.setLayout(new GridLayout(3, 3));
    10. //设置窗体大小
    11. frame.setSize(300, 300);
    12. frame.setLocation(400, 300);
    13. //通过循环添加 9 个按钮到 GridLayout 中
    14. for (int i = 1; i <= 9; i++) {
    15. Button button = new Button("button" + i);
    16. frame.add(button); //向窗体添加按钮
    17. }
    18. frame.setVisible(true);
    19. }
    20. }

    运行成功,生成的窗口如下。
    QQ截图20200617144609.png
    上述代码块中,Frame 窗口采用 GridLayout 布局管理器,设置了 9 个按钮组件,按钮组件按照编号从左到右、从上到下充满了整个容器。GridLayout 布局管理器的特点是组件的相对位置不随区域的缩放而改变,而组件的大小会随之改变,组件始终占据网格的整个区域。缺点就是总是忽略组件的最佳大小,所有组件的宽高都相同。