Java:GridBagLayout 相邻 x 网格之间不需要的间距
Java: GridBagLayout unwanted spacing between adjacent x grids
我有这个 GUI
我使用了 GridBagLayout,但我不知道为什么 Plain Bread 复选框和它对应的标签之间有很大的间距。
而且,我尝试只为按钮增加沿 x 轴的间距,但尽管重置了插图,但它沿 x 轴上的所有组件都增加了(但 Plain 之间的复选框之间的间距在为按钮设置插图之前,面包和标签已经存在)。
代码如下:
public Bakery(){
super("Bakery Bread Option");
setLayout(new FlowLayout());
panel.setLayout(new GridBagLayout());
add(panel);
GridBagConstraints gbc= new GridBagConstraints();
gbc.insets= new Insets(4,4,4,4);
gbc.gridx=0;
gbc.gridy=0;
panel.add(option_Title, gbc);
gbc.gridx=0;
gbc.gridy=1;
panel.add(check_Plain, gbc);
gbc.gridx=0;
gbc.gridy=2;
panel.add(qty_Plain, gbc);
gbc.gridx=0;
gbc.gridy=3;
panel.add(qty_Brown, gbc);
gbc.insets= new Insets(0,175,0,0);
gbc.gridx=0;
gbc.gridy=4;
panel.add(calc_Btn, gbc);
gbc.insets= new Insets(4,4,4,4);
gbc.gridx=1;
gbc.gridy=1;
panel.add(plain_Bread, gbc);
gbc.gridx=1;
gbc.gridy=2;
panel.add(qtyPlainText, gbc);
gbc.gridx=1;
gbc.gridy=3;
panel.add(qtyBrownText, gbc);
gbc.gridx=2;
gbc.gridy=1;
panel.add(check_Brown, gbc);
gbc.gridx=3;
gbc.gridy=1;
panel.add(brown_Bread, gbc);
calc_Amt calc_Handler= new calc_Amt();
calc_Btn.addActionListener(calc_Handler);
}
编辑:
这是我打算实现的GUI:
there is a huge spacing between the Plain Bread checkbox and its corresponding label.
因为组件被添加到不同的列中。
列的宽度由列中最大组件的宽度决定。所以文本组件决定了列的宽度,而不是标签。
如果想让label/check框在一起,可以创建一个JPanel,将两个组件添加到面板中。然后将面板添加到gridbaglayout。
或者您可以让两个文本字段使用 2 的 columnWidth,这意味着它们将跨越两列。
我有这个 GUI
我使用了 GridBagLayout,但我不知道为什么 Plain Bread 复选框和它对应的标签之间有很大的间距。
而且,我尝试只为按钮增加沿 x 轴的间距,但尽管重置了插图,但它沿 x 轴上的所有组件都增加了(但 Plain 之间的复选框之间的间距在为按钮设置插图之前,面包和标签已经存在)。
代码如下:
public Bakery(){
super("Bakery Bread Option");
setLayout(new FlowLayout());
panel.setLayout(new GridBagLayout());
add(panel);
GridBagConstraints gbc= new GridBagConstraints();
gbc.insets= new Insets(4,4,4,4);
gbc.gridx=0;
gbc.gridy=0;
panel.add(option_Title, gbc);
gbc.gridx=0;
gbc.gridy=1;
panel.add(check_Plain, gbc);
gbc.gridx=0;
gbc.gridy=2;
panel.add(qty_Plain, gbc);
gbc.gridx=0;
gbc.gridy=3;
panel.add(qty_Brown, gbc);
gbc.insets= new Insets(0,175,0,0);
gbc.gridx=0;
gbc.gridy=4;
panel.add(calc_Btn, gbc);
gbc.insets= new Insets(4,4,4,4);
gbc.gridx=1;
gbc.gridy=1;
panel.add(plain_Bread, gbc);
gbc.gridx=1;
gbc.gridy=2;
panel.add(qtyPlainText, gbc);
gbc.gridx=1;
gbc.gridy=3;
panel.add(qtyBrownText, gbc);
gbc.gridx=2;
gbc.gridy=1;
panel.add(check_Brown, gbc);
gbc.gridx=3;
gbc.gridy=1;
panel.add(brown_Bread, gbc);
calc_Amt calc_Handler= new calc_Amt();
calc_Btn.addActionListener(calc_Handler);
}
编辑:
这是我打算实现的GUI:
there is a huge spacing between the Plain Bread checkbox and its corresponding label.
因为组件被添加到不同的列中。
列的宽度由列中最大组件的宽度决定。所以文本组件决定了列的宽度,而不是标签。
如果想让label/check框在一起,可以创建一个JPanel,将两个组件添加到面板中。然后将面板添加到gridbaglayout。
或者您可以让两个文本字段使用 2 的 columnWidth,这意味着它们将跨越两列。