学科分类
目录
Java基础

GridLayout

GridLayout(网格布局管理器)使用纵横线将容器分成n行m列大小相等的网格,每个网格中可以添加一个组件。添加到容器中的组件首先放置在第1行第1列(左上角)的网格中,然后在第1行的网格中从左向右依次放置其他组件,行满后,继续在下一行中从左到右放置组件。与FlowLayout不同的是,放置在GridLayout布局管理器中的组件将自动占据网格的整个区域。GridLayout类有三个构造方法,如表1所示。

表1 GridLayout构造方法

方法声明 功能描述
GridLayout() 默认只有一行,每个组件占一列
GridLayout(int rows,int cols) 指定容器的行数和列数
GridLayout(int rows,int cols,int hgap,int vgap) 指定容器的行数和列数以及组件之间的水平、垂直间距

表1中,列出了GridLayout的三个构造方法,其中,参数rows代表行数,cols代表列数,hgap和vgap规定窗格之间水平和垂直方向的间距。

接下来通过一个案例演示GridLayout布局管理器的用法,如文件1所示。

文件1 Example05.java

 1    import java.awt.*;
 2    import javax.swing.*;
 3    public class Example05 {
 4        private static void createAndShowGUI() {
 5             // 创建一个名为GridLayout的窗体
 6            JFrame f = new JFrame("GridLayout");
 7            f.setLayout(new GridLayout(3, 3));  // 设置该窗体为3*3的网格
 8            f.setSize(300, 300);                   // 设置窗体大小
 9            f.setLocation(400, 300);
 10            // 下面的代码是循环添加8个按钮组件到GridLayout容器中
 11            for (int i = 1; i < 9; i++) {
 12                Button btn = new Button("btn" + i);
 13                f.add(btn);                     
 14            }
 15            f.setVisible(true);
 16            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 17        }
 18        public static void main(String[] args) {
 19            // 使用SwingUtilities工具类调用createAndShowGUI()方法并显示GUI程序
 20            SwingUtilities.invokeLater(Example05::createAndShowGUI);
 21        }
 22    }

运行结果如图1所示。

图1 网格布局管理器

文件1中,JFrame窗口采用GridLayout布局管理器,设置了8个按钮组件,按钮组件按照编号从左到右、从上到下填充满了整个容器。GridLayout布局管理器的特点是组件的相对位置不随区域的缩放而改变,但组件的大小会随之改变,组件始终占据网格的整个区域。缺点就是总是忽略组件的最佳大小,所有组件的宽高都相同。

点击此处
隐藏目录