GridBagLayout总结

java.lang.Object

 --java.awt.GridBagLayout

GridBagLayout以表格形式布置容器内的组件,将每个组件放置在每个单元格内,而一个单元格可以跨越多个单元格合并成一个单元格,即多个单元格可以组合成一个单元格,从而实现组件的自由布局。

构造函数:

GridBagLayout()

建立一个默认的GridBagLayout

每一个单元格都有各自的属性,而这些属性由GridBagConstrainsts类的成员变量来定义,且GridBagConstriaints中的所有成员变量都是public的。

java.lang.Object

--java.awt.GridBagConstratints

构造函数:

GridBagConstraints()

建立一个默认的GridBagConstraints

GridBagConstraints(intgridx,int gridy,intgridwidth,int gridheight,double weightx,double weighty,int anchor,intfill,Insets insets,int ipadx,int ipady)

建立一个指定其参数值的GridBagConstraints

GridBagConstraints的成员变量:

int gridx

int gridy

int gridwidth

int gridheight

double weightx

double weighty

int anchor

int fill

Insets insets

int ipadx

int ipady

gridx,gridy:设置组件所处行与列的起始坐标。例如gridx=0,gridy=0表示将组件放置在0行0列单元格内。

gridwidth,gridheight:设置组件横向与纵向的单元格跨越个数。

可以通过GridBagConstraints的RELETIVE,和REMAINDER来进行指定,它的用法是:

当把gridx值设置为GridBagConstriants.RELETIVE时,所添加的组件将被放置在前一个组件的右侧。同理,对gridy 值设置为GridBagConstraints.RELETIVE时,所添加的组件将被放置在前一个组件的下方,(这是一种根据前一个组件而决定当前组件的相对放置方式)

对gridweight和gridheight也可以应用GridBagConstraints的REMAINDER方式,创建的组件会从创建的起点位置 开始一直延伸到容器所能允许的界限为止。该功能使得你可以创建跨越某些行或列的组件,从而改变相应方向上组件的数目,即使其后在布局的其他地方添加额外的组件也是如此。

weightx,weighty:设置窗口变大时的缩放比例。

anchor:设置组件在单元格中的对齐方式。由以下常量来定义

GridBagConstraints.CENTER

GridBagConstraints.EAST

GridBagConstraints.WEST

GridBagConstraints.SOUTH

GridBagConstraints.NORTH

GridBagConstraints.SOUTHEAST

GrisBagConstraints.SOUTHWEST

GridBagConstraints.NORTHEAST

GridBagConstraints.NORTHWEST

fill:当某个组件未能填满单元格时,可由此属性设置横向、纵向或双向填满。由以下常量来定义

GridBagConstraints.NONE//没有

GridBagConstraints.HORIZONTAL//水平

GridBagConstraints.VERTICAL//垂直

GridBagConstraints.BOTH//占满

insets:设置单元格的间距。

java.lang.Object

--java.awt.Insets

Insets(int top,int left,int bottom,intright)

ipadx,ipady:将单元格内的组件的最小尺寸横向或纵向扩大。若一个组件的尺寸为30*10像素,ipadx=2,ipady=3,则单元格内的组件最小尺寸为34*16像素

例四:

[java] view plaincopyprint?

import java.awt.GridBagLayout;  

import java.awt.GridBagConstraints;  

import java.awt.Insets;  

import javax.swing.JFrame;  

import javax.swing.JButton;  

public class GridBagLayoutDemo {  

    public static void main(String[] args) {  

        JFrame f=new JFrame("GridBagLayout");  

        f.setLayout(new GridBagLayout());  

        JButton btn=new JButton("first");  

        GridBagConstraints gbc=new GridBagConstraints();  

        //设定第一个单元格的属性值   

        gbc.gridx=0;  

        gbc.gridy=0;  

        gbc.gridwidth=1;  

        gbc.gridheight=1;  

        gbc.weightx=0;  

        gbc.weighty=0;  

        gbc.anchor=GridBagConstraints.NORTHWEST;  

        gbc.fill=GridBagConstraints.NONE;  

        gbc.insets=new Insets(0,0,0,0);  

        gbc.ipadx=0;  

        gbc.ipady=0;  

        f.add(btn,gbc);  

        //设定第二个单元格属性值   

        gbc.gridx=1;  

        gbc.gridy=0;  

        gbc.gridwidth=GridBagConstraints.REMAINDER;  

        gbc.gridheight=1;  

        gbc.weightx=1;  

        gbc.weighty=0;  

        gbc.anchor=GridBagConstraints.CENTER;  

        gbc.fill=GridBagConstraints.HORIZONTAL;  

        gbc.insets=new Insets(5,5,5,5);  

        gbc.ipadx=0;  

        gbc.ipady=0;  

        btn=new JButton("second");  

        f.add(btn,gbc);  

        //设定第三个单元格属性值   

        gbc.gridx=0;  

        gbc.gridy=1;  

        gbc.gridwidth=1;  

        gbc.gridheight=GridBagConstraints.REMAINDER;  

        gbc.weightx=0;  

        gbc.weighty=1;  

        gbc.anchor=GridBagConstraints.CENTER;  

        gbc.fill=GridBagConstraints.VERTICAL;  

        gbc.insets=new Insets(0,0,0,0);  

        gbc.ipadx=10;  

        gbc.ipady=10;  

        btn=new JButton("three");  

        f.add(btn,gbc);  

        f.pack();  

        f.setVisible(true);  

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  

    }  

}  

运行结果:

将窗口变大后的效果:

猜你喜欢

转载自blog.csdn.net/jiedanglv4794/article/details/79903862
今日推荐