分享

(转载)关于GridBagLayout网上一篇很好的文章

 好闺女瑶瑶 2016-03-31


关于GridBagLayout网上一篇很好的文章

原文链接:
    http://www.cnblogs.com/willmove/archive/2007/08/14/855033.html

GridBagLayout:

【常用构造函数】
    public GridBagLayout()

【特点】:

GridBagLayout是所有AWT布局管理器当中最复杂的,同时他的功能也是最强大的.这种现象源于它所提供的众多的可配置选项,你几乎可以完全地 控制容器的布局方式.尽管复杂性很明显,只要理解了基本思想,就很容易使用GridBagLayout了.
GridBagLayout从它的名字中你也可以猜到,它同GridLayout一样,在容器中以网格形式来管理组件.但GridBagLayout功能要来得强大得多.

1、GridBagLayout管理的所有行和列都可以是大小不同的.
2、GridLayout把每个组件限制到一个单元格,而GridLayout并不这样:组件在容器中可以占据任意大小的矩形区域,
GridBagLayout通常由一个专用类来对他布局行为进行约束,该类叫GridBagConstraints.其中的所有成员都是public的, 因此要学好如何使用GridBagLayout首先要了解有那些约束变量,以及如何设置这些约束变量.
以下是GridBagConstraints的公有成员变量
public int anchor
public int fill
public gridheight
Public gridweight
public girdx
public gridy
public Insets insets
public int ipadx
public int ipady
public double weightx
public double weighty
看起来有很多约束需要进行设置,但事实上许多约束只需设置一次,并对多个组件重用,每次添加组件时只有少数的项需要修改.

下面是一个具有简单约束的GridBagLayout示例

public class GridBagLayoutExample2 extends JPanel {

public GridBagLayoutExample2() {

this.setLayout(new GridBagLayout());
this.setOpaque(true);
GridBagConstraints c = new GridBagConstraints();
JButton b = new JButton ("One");
c.gridx = 0 ;
c.gridy = 0;
c.gridwidth = 2;
c.gridheight = 1;
this.add(b,c);//button 1 added
c.gridy++;
b= new JButton("Two");
this.add(b,c);

c.gridx = 2;
c.gridy = 0;
c.gridwidth = 2;
c.gridheight = 2;
b = new JButton("Three");
this.add(b,c);

c.gridx = 0 ;
c.gridy = 2;
c.gridwidth = 4;
c.gridheight =1 ;
this.add(new JTextField(35),c);
}

public static void main(String[] args) {
JFrame f = new JFrame("GridBagLayout 2");
JPanel p = new GridBagLayoutExample2();
f.getContentPane().add(p);
f.pack();
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.setVisible(true);
}
}


上述示例首先生成了约束对象c , 并设置了它的属性gridx , gridy , gridwidth, girdheight四个属性,下面简要介绍这四个属性的作用

gridx, gridy 这个属性是用来描述组件在布局时应处于那个网格位置,即描述网格开始的位置
gridwidth,gridheigh这两个属性用来描述组件在布局中的所占的网格的个数,gridwidth描述了该组件在横向上所占网格的个数,gridheight描述了该组件在纵向上所占网格的个数.


你也可以通过GridBagConstraints的RELETIVE,和REMAINDER来进行指定,它的用法是:
当把gridx值设置为GridBagConstriants.RELETIVE时,在一个组件添加时,将被放置在前一个组件的右侧.同理,对gridy 值设置为GridBagConstraints.RELETIVE时,在添加组件时,将被放置在前一个组件的下方,(这是一种根据前一个组件而决定当前组 件的相对放置方式)

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

你可以注意到图表1的buttonOne和buttonTwo上下紧靠,你可以通过设置GridBagConstraints成员Insets来调整它周围的空间大小,
new Insets(int top , int left , int bottom, int right)
c.insets = new Insets(4,4,4,4);




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多