Grid Bag Layout
(Steven Shi, hi.steven@gmail.com
,2002/05/18)
Java´£¨Ñªºª©±°t¸m¤è¦¡¦³FlowLayout¡BGridLayout¡BBorderLayout¡BCardLayout¡BBoxLayout¤ÎGridBagLayout¡A¦b³o¨ÇLayout Manager¸Ì¡A°£¤FGrid Bag Layout¥~¡A³£¤£»Ýn»²§UÃþ§O´N¥i¥H·d©w¡A°ß¿WGrid Bag Layout»Ýn¤@ÓºÙ¬°GridBagConstraintsªºÃþ§O¨Ó³]©w¨ä¤¸¥óªº¦U¶µÄݩʡA©Ò¥HGrid Bag Layout¤]´N¦¨¬°©Ò¦³ª©±°t¸m¦¡¤¤³Ì½ÆÂøªº¤@Ó¡C
©³¤U¥ý¦C¥X©Ò¦³GridBagConstraintsÃþ§OªºÄæ¦ì¡A¦A¥Î¤@¨Çsamples¨Ó¸ÑÄÀGrid Bag Layoutªº¨Ï¥Î¤è¦¡¡C
|
Äæ¦ì |
§@¥Î |
|
int anchor |
·í¤¸¥ó¤p©ó¨äÅã¥Ü°Ï°ì®É¤~¥Î |
|
static int BOTH |
«·sq©w¤¸¥ó¤§¼e«×¤Î°ª«× |
|
static int CENTER |
±N¤¸¥ó¸m©óÅã¥Ü°Ï°ì¤§¤¤¥¡¦ì¸m |
|
static int EAST |
±N¤¸¥ó¸m©óÅã¥Ü°Ï°ì¤§¥k°¼¦ì¸m¡A¨Ã©ó««ª½°µ¸m¤¤¹ï»ô |
|
int fill |
·íÅã¥Ü°Ï°ì¤j©ó¤¸¥ó©Ò»Ý¤§¤j¤p¤~¥Î¦¹Äæ¦ì |
|
int gridheight |
«ü©w¤¸¥óÅã¥Ü°Ï°ì¤§¦C¼Æ |
|
int gridwidth |
«ü©w¤¸¥óÅã¥Ü°Ï°ì¤§¦æ¼Æ |
|
int gridx |
«ü©w¤¸¥óÅã¥Ü°Ï°ì¥ª°¼¤§ªí®æ |
|
int gridy |
«ü©w¤¸¥óÅã¥Ü°Ï°ì¤W¤è¤§ªí®æ |
|
static int HORIZONTAL |
«·s³]©w¤¸¥ó¤§¤ô¥¦ì¸m |
|
Insets insets |
«ü©w¤¸¥ó¥~°¼¤§¶¡¶Z |
|
int ipadx |
«ü©w¤¸¥ó¤º°¼¤§¶¡¶Zx |
|
int ipady |
«ü©w¤¸¥ó¤º°¼¤§¶¡¶Zy |
|
static int NONE |
ªí¥Ü¤¸¥ó¤§¤j¤p¦ì¸m¤£«·s³]©w |
|
static int NORTH |
±N¤¸¥ó¸m©óÅã¥Ü°Ï°ì¤§¤W¤è¦ì¸m¡A¨Ã©ó¤ô¥°µ¸m¤¤¹ï»ô |
|
static int NORTHEAST |
±N¤¸¥ó¸m©óÅã¥Ü°Ï°ì¤§¥k¤W¨¤ |
|
static int NORTHWEST |
±N¤¸¥ó¸m©óÅã¥Ü°Ï°ì¤§¥ª¤W¨¤ |
|
static int RELATIVE |
«ü©w¤¸¥ó¬°¨ä¦æ©Î¦C¤W³Ì«á¤@Ó¤¸¥ó¤§¤U¤@Ó¤¸¥ó¡A©Î¤W¤@¦¸¼W¥[¤¸¥ó¤§¤U¤@Ó¤¸¥ó |
|
static int REMAINDER |
«ü©w¤¸¥ó¬°¨ä¦æ©Î¦C¤W¤§³Ì«á¤@Ó¤¸¥ó |
|
static int SOUTH |
±N¤¸¥ó¸m©óÅã¥Ü°Ï°ì¤§¤U¤è¦ì¸m¡A¨Ã©ó¤ô¥°µ¸m¤¤¹ï»ô |
|
static int SOUTHEAST |
±N¤¸¥ó¸m©óÅã¥Ü°Ï°ì¤§¥k¤U¤è¦ì¸m |
|
static int SOUTHWEST |
±N¤¸¥ó¸m©óÅã¥Ü°Ï°ì¤§¥ª¤U¤è¦ì¸m |
|
static int VERTICAL |
«·s³]©w¤¸¥ó¤§««ª½¦ì¸m¡A¦ý¤£³]©w¨ä¤ô¥¦ì¸m |
|
double weightx |
«ü©w¨ä¥¦¤ô¥ªÅ¶¡ªº°t¸m¤è¦¡ |
|
double weighty |
«ü©w¨ä¥¦««ª½ªÅ¶¡ªº°t¸m¤è¦¡ |
|
static int WEST |
±N¤¸¥ó¸m©óÅã¥Ü°Ï°ì¤§¥ª°¼¦ì¸m¡A¨Ã©ó««ª½°µ¸m¤¤¹ï»ô |
½d¦C1: gridx¡Bgridy
gridx»Pgridy¬O¥Î¥H«ü©w¤¸¥óªº¬Û¹ï¦ì¸m¡A¥Ñ½d¨Ò1¥i¥H¬Ý¥X·ígridx¤ÎgridyªºÈÅܤƮɡA¹ï©óButtonªº¦ì¸mªº§ïÅÜ¡Agridx©MgridyªºÈ¬O¬Û¹ïªº¡A¤]´N¬O»¡gridxȶV¤jªº±Æ¦b¶V¥kÃä¡Agridy¶V¤jªº±Æ¦b¶V¤U±¡C
import java.awt.*;
public class Sample1 extends Frame {
public Sample1() {
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints cons = new GridBagConstraints();
setLayout(gridbag);
cons.gridy = 3;
Button btn1 = new Button("Button1");
gridbag.setConstraints(btn1, cons);
this.add(btn1);
cons.gridy = 2;
cons.gridx = 4;
Button btn2 = new Button("Button2");
gridbag.setConstraints(btn2, cons);
this.add(btn2);
cons.gridy = 2;
cons.gridx = 1;
Button btn3 = new Button("Button3");
gridbag.setConstraints(btn3, cons);
this.add(btn3);
cons.gridy = 4;
Button btn4 = new Button("Button4");
gridbag.setConstraints(btn4, cons);
this.add(btn4);
this.setSize(300, 500);
this.pack();
this.show();
}
public static void main(String[] args) {
Sample1 sample11 = new Sample1();
}
}

Sample1°õ¦æµ²ªG
½d¨Ò2: gridwidth¡Bgridheight¡Bfill
gridwidth©Mgridheight¬O¥Î¨Ó«ü©w¤¸¥óªº¬Û¹ï¤j¤p¡A¥Ñ½d¨Ò2¥i¥H¬Ý¥X¡A·ígridwidth©MgridheightÅܤƮɡA¤¸¥ó¤j¤pªºÅܤơCcons.fill = GridBagConstraints.BOTH¬O«ü¤¸¥ó±N³Ñ¾lªÅ¶¡¶ñº¡ªº·N«ä¡C
import java.awt.*;
public class Sample2 extends Frame {
public Sample2() {
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints cons = new GridBagConstraints();
setLayout(gridbag);
cons.fill = GridBagConstraints.BOTH;
cons.gridy = 1;
cons.gridwidth = 1;
Button btn1 = new Button("Button1");
gridbag.setConstraints(btn1, cons);
this.add(btn1);
cons.gridwidth = 2;
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 = 1;
cons.gridheight = 2;
Button btn6 = new Button("Button6");
gridbag.setConstraints(btn6, cons);
this.add(btn6);
this.pack();
this.show();
}
public static void main(String[] args) {
Sample2 sample21 = new Sample2();
}
}

Sample2°õ¦æµ²ªG
½d¨Ò3: weightx¡Bwieghty
weightx¡Bweighty³]©wªº¬OÅvÈ¡A¬O·í¥~®Ø¤j¤p§ïÅܮɡA¨ä¤º¤¸¥óÅܤƪº¿¼ÆÈ¡A·íweightx¡BweightyȬ°0®É¡A¤¸¥ó¤£·|§ïÅܤj¤p¡A¦pªGȤj©ó0«h»P¨ä¥¦¤]¤j©ó0ªº¤¸¥ó¤ñ¸û«á¡A¨ÌÅvȤj¤p¨M©wÅܤƪºµ{«×¡C
¸ÕµÛ§ïÅÜweightx¡Bweighty¨Ã¦bµ{¦¡°õ¦æ®É¡A³z¹L©ì¦²§ïÅÜFrame¤j¤p¡A´N¥i¬Ý¥Xweightx¡Bweighty¹ï¤¸¥ó¤j¤pªº¼vÅT¡C
import java.awt.*;
public class Sample3 extends Frame {
public Sample3() {
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints cons = new GridBagConstraints();
setLayout(gridbag);
cons.fill = GridBagConstraints.BOTH;
//cons.weightx = 1;
cons.weighty = 1;
cons.anchor = GridBagConstraints.EAST;
cons.gridy = 1;
cons.gridx = 1;
Button btn1 = new Button("Button1");
gridbag.setConstraints(btn1, cons);
this.add(btn1);
cons.gridy = 1;
cons.gridx = 2;
Button btn2 = new Button("Button2");
gridbag.setConstraints(btn2, cons);
this.add(btn2);
cons.gridy = 1;
cons.gridx = 3;
Button btn3 = new Button("Button3");
gridbag.setConstraints(btn3, cons);
this.add(btn3);
cons.gridy = 2;
cons.gridx = 1;
cons.weighty = 0.5;
Button btn4 = new Button("Button4");
gridbag.setConstraints(btn4, cons);
this.add(btn4);
cons.gridy = 2;
cons.gridx = 2;
cons.weighty = 0;
Button btn5 = new Button("Button5");
gridbag.setConstraints(btn5, cons);
this.add(btn5);
cons.gridy = 3;
cons.gridx = 1;
Button btn6 = new Button("Button6");
gridbag.setConstraints(btn6, cons);
this.add(btn6);
this.setSize(300, 500);
this.pack();
this.show();
}
public static void main(String[] args) {
Sample3 sample31 = new Sample3();
}
}

Sample3°õ¦æµ²ªG

Sample3©ì¦²«áªºµ²ªG
½d¨Ò4: anchor
anchor¬O¥Î¥H«ü©w¦b«ü©w½d³ò¸Ì¡A¦pªG¦³ªÅ¶¡¡A¤¸¥ón¾a¨ºÃä¡A¥i«ü©wªºÈ¦³GridBagConstraints.EAST¡BGridBagConstraints.WEST¡BGridBagConstraints.SOUTH¡BGridBagConstraints.NORTH¤ÎGridBagConstraints.CENTER¡C
¸ÕµÛ§ïÅܽd¨Ò4ªºanchorÈ¡A´N¥iµo²{Button3ªº¦ì¸mªº§ïÅÜ¡C
import java.awt.*;
public class Sample4 extends Frame {
public Sample4() {
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints cons = new GridBagConstraints();
setLayout(gridbag);
cons.gridy = 1;
cons.gridx = 1;
cons.gridwidth = 1;
cons.gridheight = 1;
Button btn1 = new Button("Button1");
gridbag.setConstraints(btn1, cons);
this.add(btn1);
cons.gridy = 1;
cons.gridx = 2;
cons.gridwidth = 2;
Button btn2 = new Button("Button2");
gridbag.setConstraints(btn2, cons);
this.add(btn2);
//cons.anchor = GridBagConstraints.SOUTH;
cons.anchor = GridBagConstraints.NORTH;
cons.gridy = 1;
cons.gridx = 4;
cons.gridheight = 2;
cons.gridwidth = 1;
Button btn3 = new Button("Button3");
gridbag.setConstraints(btn3, cons);
this.add(btn3);
cons.gridy = 2;
cons.gridx = 2;
cons.gridheight = 1;
Button btn4 = new Button("Button4");
gridbag.setConstraints(btn4, cons);
this.add(btn4);
this.pack();
this.show();
}
public static void main(String[] args) {
Sample4 sample41 = new Sample4();
}
}

Sample4°õ¦æµ²ªG
(cons.anchor = GridBagConstraints.NORTH)

Sample4°õ¦æµ²ªG
(cons.anchor = GridBagConstraints. SOUTH)
½d¨Ò5: ipadx¡Bipady
ipadx¡Bipady¬O¥Î¥H«ü©w¤¸¥ó³Ì¤p¼e«×¡B°ª«×¥~¡An¦A¥[¦h¤Ö? ·í«ü©w¤Fipadx¡Bipady«á¡A¤¸¥óªº¼e«×·|¬O³Ì¤p¼e«×¥[2*ipadx¡A°ª«×·|¬O³Ì¤p°ª«×¥[2*ipady¡A³æ¦ì¬Opixel¡C
import java.awt.*;
public class Sample5 extends Frame {
public Sample5() {
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints cons = new GridBagConstraints();
setLayout(gridbag);
Button btn1 = new Button("Button1");
gridbag.setConstraints(btn1, cons);
this.add(btn1);
cons.ipadx = 100;
cons.ipady = 50;
Button btn2 = new Button("Button2");
gridbag.setConstraints(btn2, cons);
this.add(btn2);
this.pack();
this.show();
}
public static void main(String[] args) {
Sample5 sample51 = new Sample5();
}
}

Sample5°õ¦æµ²ªG