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

­«·s­q©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°ª«×¥~¡A­n¦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