package Swing_0100_组件基础;
import java.awt.Button;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
public class Sample2 extends Frame {
public Sample2() {
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints cons = new GridBagConstraints();
setLayout(gridbag);
cons.fill = GridBagConstraints.BOTH;
cons.gridy = 1; //此时gridx=cons.RELATIVE(即是-1),以gridx=0等价;
cons.gridwidth = 1;
Button btn1 = new Button("Button1");
gridbag.setConstraints(btn1, cons);
this.add(btn1);
cons.gridwidth = 2; //此时gridx=cons.RELATIVE,表示将组件放置在添加此组件之前刚刚添加到容器中的组件的后面(等价y:1,x:1)
Button btn2 = new Button("Button2");
gridbag.setConstraints(btn2, cons);
this.add(btn2);
cons.gridy = 2;
cons.gridwidth = 1;
Button btn3 = new Button("Button3");
gridbag.setConstraints(btn3, cons);
this.add(btn3);
Button btn4 = new Button("Button4");
gridbag.setConstraints(btn4, cons);
this.add(btn4);
Button btn5 = new Button("Button5");
gridbag.setConstraints(btn5, cons);
this.add(btn5);
cons.gridy=3; //指定了确定的位置后,不会置顶,尽管此组件上面没有组件!(因为上面有两行组件).但是当gridx>3时(对此案例来说)会向左看齐!
cons.gridx=4; //girdx=3所在的行没有一个组件!
Button btn8 = new Button("Button8");
gridbag.setConstraints(btn8, cons);
this.add(btn8);
cons.gridy=3;
cons.gridx=0;
cons.gridwidth=2;
Button btn7 = new Button("Button7");
gridbag.setConstraints(btn7, cons);
this.add(btn7);
cons.gridy =cons.RELATIVE;
cons.gridx=3;
cons.gridheight =cons.REMAINDER; //使用 REMAINDER 指定组件的显示区域,该区域的范围是从 gridy 到该列的最后一个单元格。使用 RELATIV
//E 指定组件的显示区域,该区域的范围是从 gridy 到它所在列的倒数第二个单元格
Button btn6 = new Button("Button6");
gridbag.setConstraints(btn6, cons);
this.add(btn6);
this.pack();
this.setVisible(true);
}
public static void main(String[] args) {
Sample2 sample21 = new Sample2();
}
}