import java.awt.*;
class Layout extends Frame {
public Layout(String title) {
GridBagLayout layout = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
this.setLayout(layout);
c.fill = GridBagConstraints.BOTH; // /设置组件横向纵向可以拉伸
c.weightx = 1; // /设置横向权重为1
c.weighty = 1; // /设置纵向权重为1 这两条设置的是当前行
this.addComponent("bt1", layout, c);
this.addComponent("bt2", layout, c);
this.addComponent("bt3", layout, c);
c.gridwidth = GridBagConstraints.REMAINDER; // /添加的组件bt4是本行的最后一个组件
this.addComponent("bt4", layout, c);
c.weightx = 0; // /设置横向权重为0
c.weighty = 0; // /设置纵向权重为0 权重即为组件占领容器中多余的水平方向和垂直方向的空白区域
addComponent("bt5", layout, c);
c.gridwidth = 1; // /设置组件bt6跨一个网格(默认值)
this.addComponent("bt6", layout, c);
c.gridwidth = GridBagConstraints.REMAINDER; // /添加的组件bt7是本行最后一个组件
this.addComponent("bt7", layout, c);
c.gridheight = 2;
c.gridwidth = 1;
c.weightx = 2;
c.weighty = 2; ///以上四条设置的是bt8在容器中的大小
this.addComponent("bt8", layout, c);
c.gridwidth = GridBagConstraints.REMAINDER;
c.gridheight = 1; ///这里设置的是bt9和bt10两个组件的纵向跨越一个网格
this.addComponent("bt9", layout, c);
this.addComponent("bt10", layout, c);
this.pack();///根据窗口里面的布局及组件的preferedSize来确定frame的最佳大小。
this.setVisible(true);
}
// /添加组件的方法
private void addComponent(String name, GridBagLayout layout,
GridBagConstraints c) {
Button bt = new Button(name); // /创建一个名为name的按钮
layout.setConstraints(bt, c); // /设置GridBagConstraints的对象和按钮的关联
this.add(bt); // /增加按钮
}
}
public class Demo {
public static void main(String[] args) {
new Layout("GridBagLayout");
}
}
生成的窗口如下:
GridLayout 类是一个布局处理器,它以矩形网格形式对容器的组件进行布置。容器被分成大小相等的矩形,一个矩形中放置一个组件。例如,下面是一个将六个按钮布置到三行两列中的 applet:
import java.awt.*;
import java.applet.Applet;
public class ButtonGrid extends Applet {
public void init() {
setLayout(new GridLayout(3,2));
add(new Button("1"));
add(new Button("2"));
add(new Button("3"));
add(new Button("4"));
add(new Button("5"));
add(new Button("6"));
}
}
参考:
Java基础入门 清华出版 chapter 9
http://tool.oschina.net/apidocs/apidoc?api=jdk-zh
http://tool.oschina.net/apidocs/apidoc?api=jdk-zh
https://blog.csdn.net/dongdongsdo0310/article/details/6638903