- 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); //添加标签1addComponent(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少,但是用起来却很简单。