Java Swing面板布局之网格布局GridLayout
一、简介GridLayout,网格布局管理器。它以矩形网格形式对容器的组件进行布置,把容器按行列分成大小相等的矩形网格,一个网格中放置一个组件,组件宽高自动撑满网格。使容器中的各组件呈M行×N列的网格状分布。网格每列宽度相同,等于容器的宽度除以网格的列数。网格每行高度相同,等于容器的高度除以网格的行数。各组件的排列方式为:从上到下,从左到右。组件放入容器的次序决定了它在容器中的位置。容器大小改变时
一、简介
GridLayout,网格布局管理器。它以矩形网格形式对容器的组件进行布置,把容器按行列分成大小相等的矩形网格,一个网格中放置一个组件,组件宽高自动撑满网格。
- 使容器中的各组件呈M行×N列的网格状分布。
- 网格每列宽度相同,等于容器的宽度除以网格的列数。
- 网格每行高度相同,等于容器的高度除以网格的行数。
- 各组件的排列方式为:从上到下,从左到右。
- 组件放入容器的次序决定了它在容器中的位置。
- 容器大小改变时,组件的相对位置不变,大小会改变。
- 设置网格布局行数和列数时,行数或者列数可以有一个为零。若rows为0,cols为3,则列数固定为3,行数不限,每行只能放3个控件或容器。若cols为0,rows为3,则行数固定为3,列数不限,且每行必定有控件,若组件个数不能整除行数,则除去最后一行外的所有行组件个数为:Math.ceil(组件个数/rows)。Math.ceil(double x):传回不小于x的最小整数值。比如行数为3,组件数为13个,则Math.ceil(13/3)=5,即第一行,第二行组件数各为5个,剩下的组件放在最后一行。
- 若组件数超过网格设定的个数,则布局管理器会自动增加网格个数,原则是保持行数不变。
二、构造函数
GridLayout():创建具有默认值的网格布局,即每个组件占据一行一列。
GridLayout(int rows, int cols):创建具有指定行数和列数的网格布局。Rows为行数,cols为列数。
GridLayout(int rows, int cols, int hgap, int vgap):创建具有指定行数、列数以及组件水平、纵向一定间距的网格布局。
三、成员变量及函数
getColumns() :获取此布局中的列数。
setColumns(int cols) :将此布局中的列数设置为指定值。
getRows() :获取此布局中的行数。
setRows(int rows):将此布局中的行数设置为指定值。
getHgap():获取组件之间的水平间距。
setHgap(int hgap):将组件之间的水平间距设置为指定值。
getVgap() :获取组件之间的垂直间距。
setVgap(int vgap) :将组件之间的垂直间距设置为指定值。
removeLayoutComponent(Component comp) :从布局移除指定组件。
四、举例
import java.awt.GridLayout;
import javax.swing.*;
public class TestGridLayout01 extends JFrame{
public static void main(String[] args) {
new TestGridLayout01();
}
private static final long serialVersionUID = 1L;
public TestGridLayout01(){
initFrame();
}
private void initFrame(){
this.setTitle("网格布局测试1");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addComponents();
this.setSize(600, 400);
this.setLocationRelativeTo(null);
this.setVisible(true);
}
private void addComponents(){
GridLayout gridLayout = new GridLayout(2, 1);
this.setLayout(gridLayout);
JPanel topP = new JPanel(new GridLayout(4, 4));
this.add(topP);
for(int i=1; i<=4; i++){
for(int j=1; j<=4; j++){
JButton btn = new JButton("按钮"+i+j);
topP.add(btn);
}
}
JPanel btoP = new JPanel(new GridLayout(4, 4, 6, 6));
this.add(btoP);
for(int i=1; i<=4; i++){
for(int j=1; j<=4; j++){
JButton btn = new JButton("按钮"+i+j);
btoP.add(btn);
}
}
}
}
更多推荐
所有评论(0)