【发布时间】:2017-03-20 20:28:54
【问题描述】:
我有这个图形用户界面
我用过GridBagLayout,但我不知道为什么Plain Bread复选框和它对应的标签之间有很大的间距。
而且,我还尝试只为按钮增加沿 x 轴的间距,但尽管重置了插图,但沿 x 轴上的所有组件都增加了间距(但普通面包和之间的复选框之间的间距)标签在设置按钮的插图之前就已经存在)。
代码如下:
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:
【问题讨论】:
-
你想要实现什么 GUI?请考虑同时发布有效的minimal reproducible example。此外,顺便说一句,但您的代码忽略了 weightx、weighty、fill 和锚点 GridBagConstraints。
-
@HovercraftFullOfEels “你想要实现什么 GUI?” 至少提供 ASCII 艺术或 GUI 的预期布局的简单绘图大小,如果可调整大小,则具有更多的宽度和高度。顺便说一句,
JCheckBox可以有一个String来标识选项,所以我认为不需要单独的JLabel标识符。此外,由于每种类型的面包似乎都有一个“数量”选项,我会将它们初始化为 0(在JSpinner中)并完全丢失复选框。 -
GridBagLayout你想要的不是矫枉过正吗?在我看来,BoxLayout的面板每个都用FlowLayout布置是合适的。 -
“我打算实现的 GUI 图片” 鉴于“可调整大小”按钮未禁用,建议可以将其拉伸得更大。额外的空间是如何分配的?
标签: java swing gridbaglayout