Java GridBagLayout给了我意想不到的行为

Java GridBagLayout给了我意想不到的行为,java,swing,gridbaglayout,Java,Swing,Gridbaglayout,我有下面的代码,我需要创建一个网格,15个项目分为两列,在第6行,只有一个项目将取代2个项目 我希望看到两列具有相同水平宽度,但我得到的是不同的,第一列占整个尺寸的三分之一,而另一列占三分之二,为什么会发生这种情况 Insets ins = new Insets(0,0,0,0); GridBagConstraints SymbolTextc = new GridBagConstraints(0, 0, 1, 1, 1, 1, GridBagConstraints.CENTE

我有下面的代码,我需要创建一个网格,15个项目分为两列,在第6行,只有一个项目将取代2个项目

我希望看到两列具有相同水平宽度,但我得到的是不同的,第一列占整个尺寸的三分之一,而另一列占三分之二,为什么会发生这种情况

Insets ins = new Insets(0,0,0,0);
GridBagConstraints SymbolTextc           = new GridBagConstraints(0, 0, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0);
GridBagConstraints SymbolLabelc          = new GridBagConstraints(1, 0, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0); 
GridBagConstraints ComapnyTextc          = new GridBagConstraints(0, 1, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0);
GridBagConstraints ComapnyLabelc         = new GridBagConstraints(1, 1, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0);
GridBagConstraints PriceTextc            = new GridBagConstraints(0, 2, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0);
GridBagConstraints PriceLabelc           = new GridBagConstraints(1, 2, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0);
GridBagConstraints MaxQtyTextc           = new GridBagConstraints(0, 3, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0);
GridBagConstraints MaxQtyLabelc          = new GridBagConstraints(1, 3, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0);
GridBagConstraints PurchasePowerTextc    = new GridBagConstraints(0, 4, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0);
GridBagConstraints PurchasePowerLabelc   = new GridBagConstraints(1, 4, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0);
GridBagConstraints NewCoverageTextc      = new GridBagConstraints(0, 5, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0);
GridBagConstraints NewCoverageLabelc     = new GridBagConstraints(1, 5, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0);
GridBagConstraints NoteLabelc            = new GridBagConstraints(0, 6, 2, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0);
GridBagConstraints CancelButtonc         = new GridBagConstraints(0, 7, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,ins,0,0);
GridBagConstraints OkButtonc             = new GridBagConstraints(1, 7, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,ins,0,0);

所以,我把你的代码放到一个可运行的示例中,得到了


我想进一步指出你不喜欢的东西,可能是通过屏幕截图(你得到的和你期望的)

以编程方式处理你的xy值,如下所示:

int gridcol1 = 0;
int gridcol2 = 1;


Insets ins = new Insets(0,0,0,0);

int y=0;
GridBagConstraints SymbolTextc           = new GridBagConstraints(gridcol1, y, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0);
GridBagConstraints SymbolLabelc          = new GridBagConstraints(gridcol2, y, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0); 

y++;

GridBagConstraints ComapnyTextc          = new GridBagConstraints(gridcol1, y, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0);
GridBagConstraints ComapnyLabelc         = new GridBagConstraints(gridcol2, y, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0);

y++;

GridBagConstraints PriceTextc            = new GridBagConstraints(gridcol1, y, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0);
GridBagConstraints PriceLabelc           = new GridBagConstraints(gridcol2, y, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0);

y++;

GridBagConstraints MaxQtyTextc           = new GridBagConstraints(gridcol1, y, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0);
GridBagConstraints MaxQtyLabelc          = new GridBagConstraints(gridcol2, y, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0);

y++;

GridBagConstraints PurchasePowerTextc    = new GridBagConstraints(gridcol1, y, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0);
GridBagConstraints PurchasePowerLabelc   = new GridBagConstraints(gridcol2, y, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE,ins,0,0);

如果你像我描述的那样做,那么你就会看到你的问题所在。

不幸的是,奥利弗,结果仍然是一样的,而且,你的代码和我的代码之间没有区别,而不是将y值赋给变量并增加这个变量。。。。。。我仍然在寻找更好的帮助。你得到了疯狂程序员得到的吗?请发布你得到的截图