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);
}
}