this.getContentPane().setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();//新建类实例
gbc.gridwidth = 1;//指定显示区域在一行中占用一个格子单元
gbc.gridheight =1;//指定显示区域在一列中占用一个格子单元
gbc.weightx = 1;//按比例1扩展列宽
gbc.weighty = 1;//按比例1扩展列长
gbc.fill = gbc.HORIZONTAL;//该组件宽度扩展到整个显示区域,高度不变
gbc.anchor = gbc.CENTER;//组件显示于格子单元的中间 //CheckboxGroup for fore and back ground
gp = new CheckboxGroup();
fore = new Checkbox("Foreground", true, gp);
back = new Checkbox("Background", false, gp);
gbc.gridx = 1;//第1行
gbc.gridy = 0;//第0列
getContentPane().add(fore, gbc);
gbc.gridx = 3;//第3行
gbc.gridy = 0;//第0列
getContentPane().add(back, gbc);
fore.addItemListener(this);
back.addItemListener(this);
GridBagConstraints gbc = new GridBagConstraints();//新建类实例
gbc.gridwidth = 1;//指定显示区域在一行中占用一个格子单元
gbc.gridheight =1;//指定显示区域在一列中占用一个格子单元
gbc.weightx = 1;//按比例1扩展列宽
gbc.weighty = 1;//按比例1扩展列长
gbc.fill = gbc.HORIZONTAL;//该组件宽度扩展到整个显示区域,高度不变
gbc.anchor = gbc.CENTER;//组件显示于格子单元的中间 //CheckboxGroup for fore and back ground
gp = new CheckboxGroup();
fore = new Checkbox("Foreground", true, gp);
back = new Checkbox("Background", false, gp);
gbc.gridx = 1;//第1行
gbc.gridy = 0;//第0列
getContentPane().add(fore, gbc);
gbc.gridx = 3;//第3行
gbc.gridy = 0;//第0列
getContentPane().add(back, gbc);
fore.addItemListener(this);
back.addItemListener(this);
gbc.weighty = 1;//按比例1扩展列长
1、这两句不明白
2、anchor 是做什么用的?
3、几行几列是怎么定义的,是一行能放几个组件就有几行吗?能放几列就有几列吗?如果我有2个组件,但是我想定义3列呢?
import java.util.*;
import java.applet.Applet;
public class GridBagEx1 extends Applet {
protected void makebutton(String name,
GridBagLayout gridbag,
GridBagConstraints c) {
Button button = new Button(name);
gridbag.setConstraints(button, c);
add(button);
} public void init() {
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
setFont(new Font("Helvetica", Font.PLAIN, 14));
setLayout(gridbag);
c.fill = GridBagConstraints.BOTH;
c.weightx = 1.0;
makebutton("Button1", gridbag, c);
makebutton("Button2", gridbag, c);
makebutton("Button3", gridbag, c);
c.gridwidth = GridBagConstraints.REMAINDER; //end row
makebutton("Button4", gridbag, c);
c.weightx = 0.0; //reset to the default
makebutton("Button5", gridbag, c); //another row
c.gridwidth = GridBagConstraints.RELATIVE; //next-to-last in row
makebutton("Button6", gridbag, c);
c.gridwidth = GridBagConstraints.REMAINDER; //end row
makebutton("Button7", gridbag, c); c.gridwidth = 1; //reset to the default
c.gridheight = 2;
c.weighty = 1.0;
makebutton("Button8", gridbag, c);
c.weighty = 0.0; //reset to the default
c.gridwidth = GridBagConstraints.REMAINDER; //end row
c.gridheight = 1; //reset to the default
makebutton("Button9", gridbag, c);
makebutton("Button10", gridbag, c);
}
public static void main(String args[]) {
Frame f = new Frame("GridBag Layout Example");
GridBagEx1 ex1 = new GridBagEx1();
ex1.init();
f.add("Center", ex1);
f.pack();
f.resize(f.preferredSize());
f.show();
}
}
gbc.weighty = 1;//按比例1扩展列长〉1、这两句不明白
就是说水平、垂直占几格〉2、anchor 是做什么用的?
锚点,用于格内的对齐方式 (就像你用WORD中,有水平居中,靠左靠右一样)〉3、几行几列是怎么定义的,是一行能放几个组件就有几行吗?能放几列就有几列吗?如果我有2个组件,但是我想定义3列呢?
这个你不用管,Layout会自动计算行列数。
gbc.weighty = 1;//按比例1扩展列长〉1、这两句不明白
就是说水平、垂直占几格〉2、anchor 是做什么用的?
锚点,用于格内的对齐方式 (就像你用WORD中,有水平居中,靠左靠右一样)〉3、几行几列是怎么定义的,是一行能放几个组件就有几行吗?能放几列就有几列吗?如果我有2个组件,但是我想定义3列呢?
这个你不用管,Layout会自动计算行列数。
gbc.weighty = 1;//按比例1扩展列长〉1、这两句不明白
就是说水平、垂直占几格〉2、anchor 是做什么用的?
锚点,用于格内的对齐方式 (就像你用WORD中,有水平居中,靠左靠右一样)〉3、几行几列是怎么定义的,是一行能放几个组件就有几行吗?能放几列就有几列吗?如果我有2个组件,但是我想定义3列呢?
这个你不用管,Layout会自动计算行列数。