是关于gridx和gridwidth的问题,constraints.gridx = GridBagConstraints.RELATIVE和constraints.gridwidth = GridBagConstraints.RELATIVE;到底有什么区别啊,为什么他们的显示结果是不一样的,用gridx很好理解,可是gridwidth就很难让人理解了,请问一下constraints.gridwidth = GridBagConstraints.RELATIVE;是错误的吗?如果可以的话,希望大家推荐一篇好文章给我看一下,gridbagLayout这个到底怎么用好?

解决方案 »

  1.   

    最好的文章就是JDK帮助文档本身。
    两种用法都是可以的,constraints.gridx = GridBagConstraints.RELATIVE表示当前控件是前一个控件的下一个,这么用只是为了方便,因为这么写不用去计算这个控件的坐标。constraints.gridwidth = GridBagConstraints.RELATIVE这句语句的含义则是:当前控件占的宽是从当前列到最后一列。RELATIVE也可以用在gridy,gridheight上,含义基本相似。
    再附上JDK文档对此的说明:
    public static final int RELATIVE
    Specifies that this component is the next-to-last component in its column or row (gridwidth, gridheight), or that this component be placed next to the previously added component (gridx, gridy). 
      

  2.   

    用swt吧  一拖就进去了!   或者用setBounds(int x,int y,int width,int height);方法放各种组件GridBagConstraints  API给你贴一下为了有效使用网格包布局,必须自定义与组件关联的一个或多个 GridBagConstraints 对象。可以通过设置一个或多个实例变量来自定义 GridBagConstraints 对象: 
    GridBagConstraints.gridx、GridBagConstraints.gridy 
    指定包含组件显示区域的前导角的单元,在此显示区域中,位于网格原点的单元地址是 gridx = 0, gridy = 0。对于水平的从左到右的布局,组件的前导角是其左上角。对于水平的从右到左的布局,组件的前导角是其右上角。使用 GridBagConstraints.RELATIVE(默认值),指定会将组件直接放置在之前刚添加到容器中的组件的后面(沿 X 轴向为 gridx 或 Y 轴向为 gridy)。 
    GridBagConstraints.gridwidth、GridBagConstraints.gridheight 
    指定组件的显示区域中行(针对 gridwidth)或列(针对 gridheight)中的单元数。默认值为 1。使用 GridBagConstraints.REMAINDER 指定组件的显示区域,该区域的范围是从 gridx 到该行(针对 gridwidth)中的最后一个单元,或者从 gridy 到该列(针对 gridheight)中的最后一个单元。 使用 GridBagConstraints.RELATIVE 指定组件的显示区域,该区域的范围是从 gridx 到其所在行(针对 gridwidth)的倒数第二个单元,或者从 gridy 到其所在列(针对 gridheight)的倒数第二个单元。 
    GridBagConstraints.fill 
    当组件的显示区域大于组件的所需大小时,用于确定是否(以及如何)调整组件。可能的值为 GridBagConstraints.NONE(默认值)、GridBagConstraints.HORIZONTAL(加宽组件直到它足以在水平方向上填满其显示区域,但不更改其高度)、GridBagConstraints.VERTICAL(加高组件直到它足以在垂直方向上填满其显示区域,但不更改其宽度)和 GridBagConstraints.BOTH(使组件完全填满其显示区域)。 
    GridBagConstraints.ipadx、GridBagConstraints.ipady 
    指定布局中组件的内部填充,即对组件最小大小的添加量。组件的宽度至少为其最小宽度加上 ipadx 像素。类似地,组件的高度至少为其最小高度加上 ipady 像素。 
    GridBagConstraints.insets 
    指定组件的外部填充,即组件与其显示区域边缘之间间距的最小量。 
    GridBagConstraints.anchor 
    指定组件应置于其显示区域中何处。可能的值有三种:绝对值、相对于方向的值和相对于基线的值。相对于方向的值是相对于容器的 ComponentOrientation 属性进行解释的,而绝对值则不然。相关于基线的值是相对于基线进行计算的。有效值包括: 绝对值
     相对于方向的值
     相对于基线的值
     
    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