复杂的GridBagLayout

今天终于耐着性子弄懂了GridBagLayout是怎么使用的。
构造函数:
    GirdBagLayout()建立一个新的GridBagLayout管理器。
    GridBagConstraints()建立一个新的GridBagConstraints对象。
    GridBagConstraints(int gridx,int gridy,
                                   int gridwidth,int gridheight,
                                   double weightx,double weighty,
                                   int anchor,int fill, Insets insets,
                                   int ipadx,int ipady)建立一个新的GridBagConstraints对象,并指定其参数的值。
看着这一堆的参数就快烦死了,下面就了解一下参数的意思:

参数说明:
 gridx,gridy    ——    设置组件的位置,
                   gridx设置为GridBagConstraints.RELATIVE代表此组件位于之前所加入组件的右边。
                   gridy设置为GridBagConstraints.RELATIVE代表此组件位于以前所加入组件的下面。
                  建议定义出gridx,gridy的位置以便以后维护程序。gridx=0,gridy=0时放在0行0列。

 gridwidth,gridheight    ——    用来设置组件所占的单位长度与高度,默认值皆为1。
                 你可以使用GridBagConstraints.REMAINDER常量,代表此组件为此行或此列的最后一个组件,而且会占据所有剩余的空间。

 weightx,weighty    ——    用来设置窗口变大时,各组件跟着变大的比例。
                当数字越大,表示组件能得到更多的空间,默认值皆为0。

 anchor    ——    当组件空间大于组件本身时,要将组件置于何处。
               有CENTER(默认值)、NORTH、NORTHEAST、EAST、SOUTHEAST、WEST、NORTHWEST选择。

 insets    ——    设置组件之间彼此的间距。
              它有四个参数,分别是上,左,下,右,默认为(0,0,0,0)。

ipadx,ipady    ——    设置组件间距,默认值为0。

GridBagLayout里的各种设置都必须通过GridBagConstraints,因此当我们将GridBagConstraints的参数都设置
好了之后,必须new一个GridBagConstraints的对象出来,以便GridBagLayout使用。

代码片断:
       JButton b;
      GridBagConstraints c;
      int gridx,gridy,gridwidth,gridheight,anchor,fill,ipadx,ipady;
      double weightx,weighty;
      Insets inset;
     
      JFrame f=new JFrame();
     
      GridBagLayout gridbag=new GridBagLayout();
      Container contentPane=f.getContentPane();
      contentPane.setLayout(gridbag);
       
        b=new JButton("first");
        gridx=0;
        gridy=0;
        gridwidth=1;
        gridheight=1;
        weightx=10;
        weighty=1;
        anchor=GridBagConstraints.CENTER;
        fill=GridBagConstraints.HORIZONTAL;
        inset=new Insets(0,0,0,0);
        ipadx=0;
        ipady=0;
        c=new GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,fill,inset,ipadx,ipady);
        gridbag.setConstraints(b,c);
        contentPane.add(b);


GridBagLayout这种管理器是十分灵活的,只不过他写起来比较麻烦,不过用了之后才发现他对界面的部署帮助很大。
 

你可能感兴趣的:(J2SE)