日期:2014-05-20  浏览次数:20592 次

怎么有效的设置网格包布局管理器里 Constraints成员变量的值
Java code


import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class GridBagLayoutDemo extends Frame {

    Label l1,l2,l3,l4;
    TextField tf1,tf2,tf3;
    CheckboxGroup cbg;
    Checkbox cb1,cb2,cb3,cb4;
    Button b1,b2;
    
    GridBagLayout gbl;
    GridBagConstraints gbc;
    
    public GridBagLayoutDemo(String title){
        
        super(title);
        
        l1=new Label("用户名:");
        l2=new Label("密码");
        l3=new Label("重复密码");
        l4=new Label("获取途径");
        
        tf1=new TextField(20);
        tf2=new TextField(20);
        tf2=new TextField(20);
        
        cbg=new CheckboxGroup();  //初始化多选框组
        cb1=new Checkbox("搜索",cbg,false);
        cb2=new Checkbox("朋友",cbg,false);
        cb2=new Checkbox("广告",cbg,false);
        cb4=new Checkbox("其他",cbg,false);
        
        b1=new Button("提交");
        b2=new Button("重置");
        
        Panel p=new Panel();   // 创建面板   面板p
        p.add(cb1);
        p.add(cb2);
        p.add(cb3);                   
        p.add(cb4);
        
        Panel p1=new Panel();    //面板p1
        p1.add(b1);
        p1.add(b2);
                                            //辅助类
        gbl=new GridBagLayout();  //初始化gbl   创建一个网格包对象
        setLayout(gbl);            //将容器设置为网格包布局  
        
        gbc=new GridBagConstraints(); //创建一个Contraints 对象   
        gbc.fill=GridBagConstraints.HORIZONTAL;  //设置gbc的水平域 
        
        addComponent(l1,0,0,1,1); //添加标签1
        addComponent(tf1,1,0,1,2);











        
        addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                 System.exit(0);
            }
        });    
    }
    
    public void addComponent(Component c, int row, int col, int nrow, int ncol) {
            gbc.gridx=row;              //设置组件显示区域的开始边单元格
            gbc.gridy=col;              //顶端单元格
            gbc.gridwidth=nrow;         //一行的单元格数
            gbc.gridheight=ncol;         //一列的单元格数
        
            gbl.setConstraints(c, gbc);       //设计布局的约束条件
            add(c);                          //组件C添加到容器
    }


    public static void main(String[] args) {
        GridBagLayoutDemo gbld=new GridBagLayoutDemo("登陆器");
        gbld.setSize(500,500);
        gbld.setVisible(true);
        
        
    }

}





想要做这个


Java code
addComponent(l1,0,0,1,1); //添加标签1
addComponent(tf1,1,0,1,2);


1.怎么有效的写出这些组件的值呢?有什么有效的方法吗?


2.这里为什么要设置gbc.fill=GridBagConstraints.HORIZONTAL 水平域呢?


另外
Java code
 gbl.setConstraints(c, gbc);       //设计布局的约束条件
            add(c);                       //组件C添加到容器
 


3.这个约束条件是什么啊? 
这里不就是设置开始边 行列之类的吗 = = 怎么成组件了?还要添加。。。。
还是说辅助类Constraints类规定的格式 必须这么写?

------解决方案--------------------
GridBagLayout用起来很复杂。
推荐去学一下TableLayout,功能不比GridBagLayout少,但是用起来却很简单。