Java gridbaglayout中的权重不正确
我想用Java制作一个GUI,使用GridBagLayout。这就是我最终想要的: 因此,我遵循了在互联网上找到的一些说明,下面是我编写的代码:Java gridbaglayout中的权重不正确,java,gridbaglayout,Java,Gridbaglayout,我想用Java制作一个GUI,使用GridBagLayout。这就是我最终想要的: 因此,我遵循了在互联网上找到的一些说明,下面是我编写的代码: Panel panel = new Panel(); panel.setLayout(new GridBagLayout()); GridBagConstraints gc = new GridBagConstraints(); gc.fill = GridBagConstraints.BOTH; gc.ins
Panel panel = new Panel();
panel.setLayout(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();
gc.fill = GridBagConstraints.BOTH;
gc.insets = new Insets(5, 5, 5, 5);
gc.weightx = 7;
gc.weighty = 7;
panel.add(new JLabel("title"), gc, 0, 0, 2, 1);
panel.add(new JButton("button 1"), gc, 2, 0, 1, 1);
panel.add(new JButton("button 2"), gc, 3, 0, 1, 1);
panel.add(new JButton("button 3"), gc, 4, 0, 1, 1);
panel.add(new JButton("button 4"), gc, 5, 0, 1, 1);
panel.add(new JButton("button 5"), gc, 6, 0, 1, 1);
panel.add(new JLabel("subtitle"), gc, 0, 1, 7, 1);
panel.add(new JButton("list"), gc, 0, 2, 2, 4);
panel.add(new JButton("button"), gc, 0, 6, 1, 1);
panel.add(new JButton("button"), gc, 1, 6, 1, 1);
panel.add(new JButton("table"), gc, 2, 2, 5, 5);
我的功能添加:
public void add(Component component, GridBagConstraints constraints, int x, int y, int width, int height) {
constraints.gridx = x;
constraints.gridy = y;
constraints.gridwidth = width;
constraints.gridheight = height;
this.add(component, constraints);
}
但是,我最后有一点:
正如您所看到的,表格的高度根本不需要5个单元格,列表也不需要4个单元格。有人知道为什么会这样吗?谢谢。如果您添加以下内容,它应该会起作用:
constraints.weightx = (double) width / 7.0;
constraints.weighty = (double) height / 7.0;
添加到您的添加方法。或以其他方式确定组件相对于网格大小的重量是的!非常感谢^^你能解释一下为什么吗?不幸的是不是真的。。。权重应介于0.0和1.0之间,并指示组件在垂直和水平方向上占用的空间。。。到目前为止,一切都很好。。。然而,我不太清楚为什么gridwidth和Heights没有声明这一点,但基本上,如果你计算重量,将高度和宽度相加为1.0,你应该是安全的啊,我了解到额外的空间被赋予了重量X和重量Y更大的组件。。。所以我给了表和列表一个权重y=1,剩下的是0。再次感谢您的帮助:)