Swing中网格组布局管理器

一、介绍

由GridBagLayout类实现的布局管理器称为网格组布局管理器,它实现了一个动态的矩形网格,这个矩形网格由无数个矩形单元格组成,每个组件可以占用一个或多个这样的单元格。

二、属性

(1)gridx和gridy

gridx==>x轴索引值,代表水平,gridy==>y轴索引值,代表垂直

(2)gridwidth和gridheight

gridheight==》组件占据行数,gridwidth==》组件占据列数

(3)anchor

anchor属性用来设置组件在其所显示区域的显示位置
通常将显示区域从方向上划分为9个方位,北方(NORTH)、东北(NORTHEAST)、南方(SOUTH)、
西南(SOUTHWEST)、西方(WEST)、西北(NORTHWEST)、东方(EAST)、东南(EASTSOUTH)和中心(CENTER)
可以利用这9个静态常量设置anchor属性,其中常量CENTER为默认位置

(4)fill

fill属性,设置组件的填充方式,
设置静态常量为NONE,为不调整组件大小至填满显示区域
设置静态常量为HORIZONTAL==》表示只调整组件水平方向的大小(即组件宽度)填满显示区域
设置静态常量为VERTICAL==》表示只调整组件垂直方向的大小(即组件高度)填满显示区域
设置静态常量为BOTH,则表示同时调整组件的宽度和高度至填满显示区域

(5)insets

设置组件最左侧的最小距离,insets为设置组件四周与单元格边缘之间的距离
Insets类仅有一个构造方法Insets(int top,int left,int bottom,int right)这四个入口参数
依次为组件上方、左侧、下方和右侧的最小距离,单位为像素

(6)ipadx和ipady

ipadx用来修改组件的宽度,ipady用来修改组件的高度

(7)weigthx和weigthy

weightx属性,是用来设置其所在列对额外空间的分布方式,
如果该列中含多个weightx属性,则取它们的最大值为该列的分布方式;
weighty属性,是用来设置其所在行对额外空间的分布方式,
如果该列中含多个weightx属性,则取它们的最大值为该列的分布方式。

三、程序代码(利用网格组布布局管理器管理组件,并使用GridBagConstraints类中所用来设置组件布局信息的属性)

​
import javax.swing.*;
import java.awt.*;
import java.awt.GridBagConstraints;

//网格组布局管理器
public class GridBagExamplee extends JFrame {
    public GridBagExamplee() {
        //final可以用于声明变量,一旦变量被设定之后,就不可再改变变量的值,final定义的类不可继承
        //使用final声明变量
        final JButton button = new JButton("A");
        /*
        GridBagConstraints===》可以设置组件的布局信息,
        如组件在网格组中位于第几行、第几列,以及需占用几行几列等。
         */
        final GridBagConstraints gridBagConstraints = new GridBagConstraints();//定义gridBagConstraints
        //gridx==>x轴索引值,代表水平,gridy==>y轴索引值,代表垂直
        gridBagConstraints.gridy = 0;//起始点为第一行
        gridBagConstraints.gridx = 0;//起始点为第一列
        /*
        weightx属性,是用来设置其所在列对额外空间的分布方式,
        如果该列中含多个weightx属性,则取它们的最大值为该列的分布方式;
        weighty属性,是用来设置其所在行对额外空间的分布方式,
        如果该列中含多个weightx属性,则取它们的最大值为该列的分布方式。
         */
        gridBagConstraints.weightx = 10;//第1列的分布方式为10%
        /*
        fill属性,设置组件的填充方式,
        设置静态常量为NONE,为不调整组件大小至填满显示区域
        设置静态常量为HORIZONTAL==》表示只调整组件水平方向的大小(即组件宽度)填满显示区域
        设置静态常量为VERTICAL==》表示只调整组件垂直方向的大小(即组件高度)填满显示区域
        设置静态常量为BOTH,则表示同时调整组件的宽度和高度至填满显示区域
                 */
        gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
        //注意在此处设置网格布局管理器,否则会发生报错!!!
        setLayout(new GridBagLayout());
        setTitle("网格组布局管理器");
        //先获取容器,然后在容器里面添加按钮,采用网格组布局管理器
        getContentPane().add(button, gridBagConstraints);
        final JButton button_1 = new JButton("B");
        final GridBagConstraints gridBagConstraints_1 = new GridBagConstraints();
        /*
        设置组件最左侧的最小距离,insets为设置组件四周与单元格边缘之间的距离
        Insets类仅有一个构造方法Insets(int top,int left,int bottom,int right)这四个入口参数
        依次为组件上方、左侧、下方和右侧的最小距离,单位为像素
         */
        gridBagConstraints_1.insets = new Insets(0, 5, 0, 0);
        gridBagConstraints_1.weightx = 20;//第一列的分布方式为20%
        gridBagConstraints_1.fill=GridBagConstraints.HORIZONTAL;
        getContentPane().add(button_1,gridBagConstraints_1);
        final GridBagConstraints gridBagConstraints_2=new GridBagConstraints();
        final JButton button_2=new JButton("C");
        gridBagConstraints_2.gridy=0;//起始点为第一行
        gridBagConstraints_2.gridx=2;//起始点为第三列
        //gridheight==》组件占据行数,gridwidth==》组件占据列数
        gridBagConstraints_2.gridheight=2;//组件占两行
        gridBagConstraints_2.insets=new Insets(0,5,0,0);
        gridBagConstraints_2.weightx=30;//第一列的分布方式为30%
        //同时调整组件的宽度与高度
        gridBagConstraints_2.fill=GridBagConstraints.BOTH;
        getContentPane().add(button_2,gridBagConstraints_2);
        final GridBagConstraints gridBagConstraints_3=new GridBagConstraints();
        final JButton button_3=new JButton("D");
        gridBagConstraints_3.gridy=0;//起始点为第一行
        gridBagConstraints_3.gridx=3;//起始点为第四列
        gridBagConstraints_3.gridheight=4;//组件占据四行
        //设置组件左侧和右侧的最小距离
        gridBagConstraints_3.insets=new Insets(0,5,0,5);
        gridBagConstraints_3.weightx=40;//第一列的分布方式为40%
        gridBagConstraints_3.fill=GridBagConstraints.BOTH;
        getContentPane().add(button_3,gridBagConstraints_3);
        final GridBagConstraints gridBagConstraints_4=new GridBagConstraints();
        final JButton button_4=new JButton("E");
        gridBagConstraints_4.gridy=1;
        gridBagConstraints_4.gridx=0;
        gridBagConstraints_4.gridwidth=2;//所在列占两行
        //设置组件上方的最小距离
        gridBagConstraints_4.insets=new Insets(5,0,0,0);
        gridBagConstraints_4.fill=GridBagConstraints.HORIZONTAL;
        getContentPane().add(button_4,gridBagConstraints_4);
        final GridBagConstraints gridBagConstraints_5=new GridBagConstraints();
        final JButton button_5=new JButton("F");
        gridBagConstraints_5.gridy=2;
        gridBagConstraints_5.gridx=0;
        gridBagConstraints_5.insets=new Insets(5,0,0,0);
        gridBagConstraints_5.fill=GridBagConstraints.HORIZONTAL;
        getContentPane().add(button_5,gridBagConstraints_5);
        final GridBagConstraints gridBagConstraints_6=new GridBagConstraints();
        final JButton button_6=new JButton("G");
        gridBagConstraints_6.gridy=2;
        gridBagConstraints_6.gridx=1;
        gridBagConstraints_6.gridwidth=2;
        gridBagConstraints_6.gridheight=2;
        gridBagConstraints_6.insets=new Insets(5,5,0,0);
//        gridBagConstraints_6.fill=GridBagConstraints.BOTH;
        //修改组件G的代码,填充方式垂直填充,水平方向上将组件的首选宽度增加35像素,显示位置设置在东方
        gridBagConstraints_6.fill=GridBagConstraints.VERTICAL;//垂直,只调整组件高度
        /*
        ipadx用来修改组件的宽度,ipady用来修改组件的高度
         */
        gridBagConstraints_6.ipadx=30;//水平方向增加组件首选宽度为30
        /*
        anchor属性用来设置组件在其所显示区域的显示位置
        通常将显示区域从方向上划分为9个方位,北方(NORTH)、东北(NORTHEAST)、南方(SOUTH)、
        西南(SOUTHWEST)、西方(WEST)、西北(NORTHWEST)、东方(EAST)、东南(EASTSOUTH)和中心(CENTER)
        可以利用这9个静态常量设置anchor属性,其中常量CENTER为默认位置
         */
        gridBagConstraints_6.anchor=GridBagConstraints.EAST;//显示组件在东方
        getContentPane().add(button_6,gridBagConstraints_6);
        final GridBagConstraints gridBagConstraints_7=new GridBagConstraints();
        final JButton button_7=new JButton("H");
        gridBagConstraints_7.gridy=3;
        gridBagConstraints_7.gridx=0;
        gridBagConstraints_7.insets=new Insets(5,0,0,0);
        gridBagConstraints_7.fill=GridBagConstraints.BOTH;
        getContentPane().add(button_7,gridBagConstraints_7);
        setSize(300,300);
        setVisible(true);
    }
    public static void main(String[] args){
        new GridBagExamplee();
    }
}

​

四、程序运行结果

三十一、Java 图形化界面设计——布局管理器之 GridLayout(网格布局网格布局特点: l 使容器中的各件呈 M 行×N 列的网格状分布。 l 网格每列宽度相同,等于容器的宽度除以网格的列数。 l 网格每行高度相同,等于容器的高度除以网格的行数。 l 各件的排列方式为:从上到下,从左到右。 l 件放入容器的次序决定了它在容器中的位置。 l 容器大小改变时,件的相对位置不变,大小会改变。 l 设置网格布局行数和列数时,行数或者列数可以有一个为零。若 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 个, 剩下的件放在最后一行。 3、管路敷设技术 通1过管线0不仅2222可以解决吊顶层配置不规范高中资料试卷问题22,而且可保障2323各类管路习题到位。在管路敷设过程1中,要加强看255222护1关于管路高中资料试卷连接管口处理高中资料试卷弯扁度固定盒位置.保护层防腐跨接地线弯曲半径标高等,要求技术交底。管线敷设技术中包含线槽、管架等多项方式,为解决高中语文电气课件中管壁薄、接口不严等问题,合理利用管线敷设技术。线缆敷设原则:在分线盒处,当不同电压回路交叉时,应采用金属隔板进行隔开处理;同一线槽内,强电回路须同时切断习题电源,线缆敷设完毕,要进行检查和检测处理。 4、电气课件中调试技术 对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料试卷相互作用与相互关系,根据生产工艺高中资料试卷要求,对电气设备进行空载与带负荷下高中资料试卷调控试验;对设备进行调整使其在正常工况下与过度工作下都可以正常工作;对于继电保护进行整核对定值,审核与校对图纸,编写复杂设备与装置高中资料试卷调试方案,编写重要设备高中资料试卷试验方案以及系统启动方案;对整套启动过程中高中资料试卷电气设备进行调试工作并且进行过关运行高中资料试卷技术指导。对于调试过程中高中资料试卷技术问题,作为调试人员,需要在事前掌握图纸资料、设备制造厂家出具高中资料试卷试验报告与相关技术资料,并且了解现场设备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。 5、电气设备调试高中资料试卷技术 电力保护装置调试技术,电力保护高中资料试卷配置技术是指机在进行继电保护高中资料试卷总体配置时,需要在最大限度内来确保机高中资料试卷安全,并且尽可能地缩小故障高中资料试卷破坏范围,或者对某些异常高中资料试卷工况进行自动处理,尤其要避免错误高中资料试卷保护装置动作,并且拒绝动作,来避免不必要高中资料试卷突然停机。因此,电力高中资料试卷保护装置调试技术,要求电力保护装置做到准确灵活。对于差动保护装置高中资料试卷调试技术是指发电机一变压器在发生内部故障时,需要进行外部电源高中资料试卷切除从而采用高中资料试卷主要保护装置。 l 若件数超过网格设定的个数,则布局管理器会自动增加网格个数, 原则是保持行数不变。 构造方法摘要 GridLayout(): 创建具有默认值的网格布局,即每个件占 据一行一列。 GridLayout(int rows, int cols) : 创建具有指定行数和列数的网格布局。Rows 为行数,cols 为列数。 GridLayout(int rows, int cols, int hgap, int vgap) : 创建具有指定行数、列数以及件水平、纵向一定间距的 网格布局。 方法摘要 int getColumns() :获取此布局中的列数。 3、管路敷设技术 通1过管线0不仅2222可以解决吊顶层配置不规范高中资料试卷问题22,而且可保障2323各类管路习题到位。在管路敷设过程1中,要加强看255222护1关于管路高中资料试卷连接管口处理高中资料试卷弯扁度固定盒位置.保护层防腐跨接地线弯曲半径标高等,要求技术交底。管线敷设技术中包含线槽、管架等多项方式,为解决高中语文电气课件中管壁薄、接口不严等问题,合理利用管线敷设技术。线缆敷设原则:在分线盒处,当不同电压回路交叉时,应采用金属隔板进行隔开处理;同一线槽内,强电回路须同时切断习题电源,线缆敷设完毕,要进行检查和检测处理。 4、电气课件中调试技术 对全部高中资料试卷电气设备,在安
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值