GridLayout 布局, 听其名而知其意, 它将容器分割成多行多列, 组件被填充到每个网格中, 添加到容器中的组件首先放置在左上角的网格中 ,
然后从左到右放置其它的组件, 当占满该行的所有网格后,
接着继续在下一行从左到右放置组件。
注意事项 1、组件的相对位置不随容器的缩放而变化,但大小会变化; 2、所有组件的大小相同; 3、可以通过 GridLayout(int rows,int cols,int hgap,int vgap) 来指定网格的行 / 列,水 平间隙 / 垂直间隙。 参数说明: rows: 行数 /cols: 列数 /hgap: 垂直间隙 /vgap: 水平间隙
下面上代码:
/** * 测试网格布局 */ package com.shunping; import java.awt.*; import javax.swing.*; public class Demo8_4 extends JFrame{ //这里定义一个数组来存放我们的组件 int size = 9; JButton jbs[] = new JButton[size]; /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Demo8_4 demo8_4 = new Demo8_4(300, 200); } public Demo8_4(int x_size, int y_size) { //创建小控件 for(int i = 0; i < jbs.length; i++) { jbs[i] = new JButton(String.valueOf(i)); } //添加小控件到主窗体 for(int i = 0; i < jbs.length; i++) { this.add(jbs[i]); } //设置布局管理,3x3,然后每个空间间隔10个像素 this.setLayout(new GridLayout(3, 3, 20, 20)); //设置窗体大小 this.setSize(x_size, y_size); //设置窗体显示位置 //this.setLocation(300, 400); this.setLocationRelativeTo(null); //居中显示 //禁止用户改变窗体大小 this.setResizable(false); //设置窗体名字 this.setTitle("网格布局"); //设置关闭窗体的时候,自动关闭虚拟机 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗体为visible this.setVisible(true); } }
运行结果如下: