GridLayout(网格布局)
1、GridLayout布局特征
网格布局特点:
1. 使容器中的各组件呈M行×N列的网格状分布。
2. 网格每列宽度相同,等于容器的宽度除以网格的列数。
网格每行高度相同,等于容器的高度除以网格的行数。
3. 各组件的排列方式为:从上到下,从左到右。
容器大小改变时,组件的相对位置不变,大小会改变。
4. 设置行数和列数时,行数或者列数可以有一个为零。(即不限)
若rows为0,cols为3,则列固定为3,行不限,每行只能放3个
若cols为0,rows为3,则行固定为3,列不限,每行必定有控件
5. 至于其他规则,很明显啦。
假设你有13个控件,你又设置了三行,一行五个,你觉得第三行应该有多少个?
并且如果组件数量超过设定的个数,布局管理器会自动增加网格个数,原则是保持行数不变。就是
假设还是13个控件,你设置了两行,一行五个,放不下系统就给加了行,第三行放多出来的三个)
2、网格布局GridLayout类的常用构造函数和方法
构造方法摘要 |
|
GridLayout() |
默认值的网格布局,组件一行一列。 |
GridLayout (int rows, int cols) |
具有指定行列的网格布局。 Rows为行数,cols为列数。 |
GridLayout (int rows,int cols, int hgap,int vgap) |
指定行数、列数, 并指定组件水平、纵向间距。 |
方法摘要 |
|
int getRows() |
获取此布局中的行数。 |
int getColumns() |
获取此布局中的列数。 |
int getHgap() |
获取组件之间的水平间距。 |
int getVgap() |
获取组件之间的垂直间距。 |
void setRows(int rows) |
将此布局中的行数设置为指定值。 |
void setColumns(int cols) |
将此布局中的列数设置为指定值。 |
void setHgap(int hgap) |
将组件之间的水平间距设置为指定值。 |
void setVgap(int vgap) |
将组件之间的垂直间距设置为指定值。 |
void removeLayoutComponent (Component comp) |
从布局移除指定组件。 |
String toString() |
返回此网格布局的值的字符串表示形式。 |
3、网格布局实例:
实例://GridLayoutDemo.Java
package gridlayoutdemo;
import java.awt.*;
import javax.swing.*;
class GridFrame extends JFrame{
//定义文本框
JTextArea t = new JTextArea();
//定义面板,并设置为网格布局,5行4列,组件水平、垂直间距均为3,计算器按钮在面板内
JPanel p = new JPanel(new GridLayout(5,4,3,3));
//定义字符串数组,为按钮的显示文本赋值,注意字符元素的顺序与循环添加按钮保持一致
String str[]={"()","π","←","+","7","8","9","-","4","5","6","*","1","2","3","/","C","0",".","="};
public GridFrame(String s){
super(s); //为窗体名称赋值
setLayout(new BorderLayout()); //定义窗体布局为边界布局
JButton btn[]; //声明按钮数组
btn = new JButton[str.length]; //创建按钮数组
//循环定义按钮,并添加到面板中
for (int i=0;i<str.length;i++) {
btn[i] = new JButton ( str[i] );
btn[i].setFont(new Font ( "微软雅黑" , Font.PLAIN , 22));//设置按钮字体
p.add(btn[i]);
}
//将文本框放置在窗体NORTH位置
getContentPane().add(t,BorderLayout.NORTH);
//将面板放置在窗体CENTER位置
getContentPane().add(p,BorderLayout.CENTER);
setSize(250,200); //设置大小
setLocationRelativeTo(null); //让窗体居中显示
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true); //设置显示
}
public static void main (String[] args){
GridFrame gl = new GridFrame("网格布局计算器"); //生成对象并设置标题为 网格布局计算器
}
}