我是个新手,最近在研究GridBagLayout 的使用,对GridBagConstraits的参数都懂了,就是对GridBagLayout本的静态字段和方法的使用不了解,哪位高人指点一下,最好弄个例子,万分感谢!

解决方案 »

  1.   

    Java 中GridBagLayout布局管理器的小例子,附详细注释http://blog.csdn.net/mq612/archive/2006/09/21/1262071.aspx
      

  2.   

    GridBagLayout的使用:是java中最有弹性但也是最复杂的一种版面管理器。它只有一种构造函数,但必须配合
                               GridBagConstraints才能达到设置的效果。
        GridBagLayout的类层次结构图:
        java.lang.Object
         --java.awt.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使用。
    例子:
    GridBagLayoutDemo.javaimport java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class GridBagLayoutDemo{
       public GridBagLayoutDemo(){
          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);
            
            
            b=new JButton("second");
            gridx=1;
            gridy=0;
            gridwidth=2;
            gridheight=1;
            weightx=1;
            weighty=1;
            anchor=GridBagConstraints.CENTER;
            fill=GridBagConstraints.HORIZONTAL;
            inset=new Insets(0,0,0,0);
            ipadx=50;
            ipady=0;
            c=new GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,
               fill,inset,ipadx,ipady);
            gridbag.setConstraints(b,c);
            contentPane.add(b);        b=new JButton("third");
            gridx=0;
            gridy=1;
            gridwidth=1;
            gridheight=1;
            weightx=1;
            weighty=1;
            anchor=GridBagConstraints.CENTER;
            fill=GridBagConstraints.HORIZONTAL;
            inset=new Insets(0,0,0,0);
            ipadx=0;
            ipady=50;
            c=new GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,
               fill,inset,ipadx,ipady);
            gridbag.setConstraints(b,c);
            contentPane.add(b);
            
            b=new JButton("fourth");
            gridx=1;
            gridy=1;
            gridwidth=1;
            gridheight=1;
            weightx=1;
            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);        b=new JButton("This is the last button");
            gridx=2;
            gridy=1;
            gridwidth=1;
            gridheight=2;
            weightx=1;
            weighty=1;
            anchor=GridBagConstraints.CENTER;
            fill=GridBagConstraints.HORIZONTAL;
            inset=new Insets(0,0,0,0);
            ipadx=0;
            ipady=50;
            c=new GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,
               fill,inset,ipadx,ipady);
            gridbag.setConstraints(b,c);
            contentPane.add(b);        f.setTitle("GridBagLayout");
            f.pack();
            f.setVisible(true);
          f.addWindowListener(
               new WindowAdapter(){
                   public void windowClosing(WindowEvent e){
                      System.exit(0);
                   }
               }
          );       
       }
       public static void main(String[] args){
          new GridBagLayoutDemo();
       }
    }
      

  3.   

    不好意思啊,你们给的例子不是我想要的,也许我没有说明白,GridBagLayout本身的字段和方法,而不是GridBagConstraits的参数使用,所以分不能给,只能谢谢了
      

  4.   

    去看看java api里面的GridBagLayout类 里面讲得很详细 对GridBagLayout的字段都有解释