网格组布局是Java较为复杂的布局,虽然这又背于Java简单的初衷。网格组布局十分优雅,组件可以随着窗口的调整自动放大或缩小。
要有效地使用网格组布局,必须自定义GridBagConstraints与其组件关联的一个或多个对象。您可以GridBagConstraints 通过设置一个或多个实例变量来自定义对象:
GridBagConstraints.gridx, GridBagConstraints.gridy
每个格子都有自己的单元格坐标(gridx,gridy),并不以长度为单位,左上角的原点单元格,坐标为(0,0)。右边格子的坐标为(1,0),一次类推。
GridBagConstraints.gridwidth, GridBagConstraints.gridheight
指跨过的单元格数,网格坐标为(0,0)的单元格网格长度为(2,2),表明其占据了2*2的方格
GridBagConstraints.fill
指窗口拉伸时的填充的方向
GridBagConstraints.insets
指定组件的外部填充,即组件与其显示区域的边缘之间的最小间距。
GridBagConstraints.anchor
指对齐方式
GridBagConstraints.NORTH
GridBagConstraints.SOUTH
GridBagConstraints.WEST
GridBagConstraints.EAST
GridBagConstraints.NORTHWEST
GridBagConstraints.NORTHEAST
GridBagConstraints.SOUTHWEST
GridBagConstraints.SOUTHEAST
GridBagConstraints.CENTER (默认)
方向相对值:
GridBagConstraints.PAGE_START
GridBagConstraints.PAGE_END
GridBagConstraints.LINE_START
GridBagConstraints.LINE_END
GridBagConstraints.FIRST_LINE_START
GridBagConstraints.FIRST_LINE_END
GridBagConstraints.LAST_LINE_START
GridBagConstraints.LAST_LINE_END
基准相对值:
GridBagConstraints.BASELINE
GridBagConstraints.BASELINE_LEADING
GridBagConstraints.BASELINE_TRAILING
GridBagConstraints.ABOVE_BASELINE
GridBagConstraints.ABOVE_BASELINE_LEADING
GridBagConstraints.ABOVE_BASELINE_TRAILING
GridBagConstraints.BELOW_BASELINE
GridBagConstraints.BELOW_BASELINE_LEADING
GridBagConstraints.BELOW_BASELINE_TRAILING
GridBagConstraints.weightx, GridBagConstraints.weighty
指最大拉伸宽度或高度
要想更加方便地使用GridBagLayout,一般我们重写GridBagConstraints,改名为GBC。这样我们可以采用流式写法,快速定义GBC的参数。代码如下:
import java.awt.*;
public class GBC extends GridBagConstraints
{
public GBC(int gridx,int gridy)
{
this.gridx=gridx;
this.gridy=gridy;
}
public GBC(int gridx,int gridy,int gridwidth,int gridheight)
{
this.gridx=gridx;
this.gridy=gridy;
this.gridwidth=gridwidth;
this.gridheight=gridheight;
}
public GBC setAnchor(int anchor)
{
this.anchor=anchor;
return this;
}
publ