GridBagLayout 给了我意想不到的行为
GridBagLayout gave me unexpected behaviour
我有以下一段代码,我需要创建一个网格,将 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);
所以,我将您的代码放入一个可运行的示例中并得到...
希望进一步指出您不喜欢的地方,可能采用 runnable example 和屏幕截图(您得到的和您期望的)的形式
以编程方式处理您的 x 和 y 值,如下所示:
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);
如果你按照我描述的那样去做,那么你就会知道你的问题出在哪里。
我有以下一段代码,我需要创建一个网格,将 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);
所以,我将您的代码放入一个可运行的示例中并得到...
希望进一步指出您不喜欢的地方,可能采用 runnable example 和屏幕截图(您得到的和您期望的)的形式
以编程方式处理您的 x 和 y 值,如下所示:
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);
如果你按照我描述的那样去做,那么你就会知道你的问题出在哪里。