1.weightx,weighty表示控件使用剩余空间得 相对分额。只要相对分额不变,你就看不出变化

解决方案 »

  1.   

    如果一行中放了2个控件,第一个控件weightx=1;2nd control weightx=1;那么1st control占1/(1+1)的剩余空间(x方向)
    第一个控件weightx=2;2nd control weightx=1;那么1st control占2/(2+1)的剩余空间(x方向)
      

  2.   

    哦,基本明白了。还有个问题,书上说用两个double 数组 rowWeights 和 columnWeights可以很方便得替代weigthx,weighty来完成这个功能,但是又没有提供例子,能不能详细说说这两个数组啊?最好举个简单的例子看看 
      

  3.   

    to masterz():
    你说:1.weightx,weighty表示控件使用剩余空间得 相对分额。只要相对分额不变,你就看不出变化 
    但是你看看我下面这个程序,随我怎么改相对份额,仍然看不出变化来,是怎么回事啊?
    import java.awt.*;public class TGBL extends Panel
    {
      public static void main(String[] args)
      {
        Frame f=new Frame("GridBag Layout Example");
        TGBL tgbl=new TGBL();
        f.add(tgbl,"Center");
        f.pack();
        f.setVisible(true);
      }
      
      Panel tmp;
      GridBagLayout gbl=new GridBagLayout();
      GridBagConstraints gbc=new GridBagConstraints();
      
      public TGBL()
      {
        setLayout(gbl);
        
        gbc.gridy=0; gbc.gridx=0; gbc.weightx=10;
        add(new Button("TopLeft"),gbc);
        
        gbc.gridy=0; gbc.gridx=2; gbc.weightx=90;
        add(new Button("TopRight"),gbc);
        
        gbc.gridy=1; gbc.gridx=1;
        tmp=new Panel();
        tmp.setLayout(new GridLayout(2,1));
        tmp.add(new Button("CenterTop"));
        tmp.add(new Button("CenterBottom"));
        add(tmp,gbc);
        
        gbc.gridy=2; gbc.gridx=0;
        tmp=new Panel();
        tmp.setLayout(new GridLayout(3,1));
        tmp.add(new Button("BottomLeftTop"));
        tmp.add(new Button("BottomLeftCenter"));
        tmp.add(new Button("BottomLeftBottom"));
        add(tmp,gbc);
        
        gbc.gridy=2; gbc.gridx=2;
        tmp=new Panel();
        tmp.setLayout(new GridLayout(3,1));
        tmp.add(new Button("BottomRightTop"));
        tmp.add(new Button("BottomRightCenter"));
        tmp.add(new Button("BottomRightBottom"));
        add(tmp,gbc);
      }
    }
      

  4.   

    f.pack();//没有剩余空间了,weightx就没有意义了
      

  5.   

    去掉f.pack()仍然不行,不信你试试看啊
      

  6.   

    weightx,weighty的有效值在0.0-1.0之间.
    实际上它是对单元格起作用的.
    不是对组件起作用的.
    看不出效果,你需要加这么一句话 c.fill = c.HORIZONTAL;