GridBagLayout
灵活也难以掌控的布局管理器,每个 GridBagLayout
对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,该单元被称为显示区域。
组件可以由程序选择存放位置Constraints 对象指定组件的显示区域在网格中的具体放置位置,以及组件在其显示区域中的放置方式,考虑每个组件的最小大小和首选大小,以确定组件的大小。
GridBagLayout
对每个组件施加空间控制是通过类 GridBagConstraints
来实现的。
import java.awt.*;
public class GridBagLayout01{
public static void main(String args[]){
Frame f=new Frame("GridBagLayout网格包布局的演示");
Panel p=new Panel();
GridBagLayout gbl=new GridBagLayout();
GridBagConstraints gbc=new GridBagConstraints();
Button b=new Button("确定");
//Checkbox复选框
Checkbox cb0=new Checkbox("one",true,null);
Checkbox cb1=new Checkbox("two",false,null);
//创建标签
Label la=new Label("性别:");
//CheckboxGroup用于集合 Checkbox复选框的按钮集成单选了
CheckboxGroup cbg=new CheckboxGroup();
//创建单选按钮
Checkbox cb3=new Checkbox("男",true,cbg);
Checkbox cb4=new Checkbox("女",false,cbg);
//创建文本框
TextField name=new TextField("name");
TextField name1=new TextField("姓名",5);
//创建列表
List l=new List(2);
//向列表添加内容
l.add("Sun");
l.add("Moon");
l.add("Swing");
//设置板面布局
p.setLayout(gbl);
gbc.gridwidth=GridBagConstraints.REMAINDER;//设置网格宽度
gbc.gridheight=1;
gbl.setConstraints(name, gbc);
gbl.setConstraints(name1, gbc);
p.add(name);p.add(name1);
gbc.gridwidth=3;
gbc.gridheight=1;
gbl.setConstraints(la, gbc);
gbl.setConstraints(cb3, gbc);
gbl.setConstraints(cb4, gbc);
p.add(la);p.add(cb3);p.add(cb4);
//设置网格包管理约束
gbc.gridwidth=GridBagConstraints.REMAINDER;//设置网格宽度
gbl.setConstraints(cb0, gbc);
gbl.setConstraints(cb1, gbc);
//向板面添加组件
p.add(cb0);p.add(cb1);
//设置宽高
gbc.gridwidth=1;
gbc.gridheight=1;
gbl.setConstraints(l, gbc);
p.add(l);
gbc.gridwidth=GridBagConstraints.CENTER;
gbl.setConstraints(b, gbc);
p.add(b);
f.add(p,"Center");
f.pack();
f.setSize(400, 300);
f.setVisible(true);
}
}