Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java gridbaglayout中的权重不正确_Java_Gridbaglayout - Fatal编程技术网

Java 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

我想用Java制作一个GUI,使用GridBagLayout。这就是我最终想要的:

因此,我遵循了在互联网上找到的一些说明,下面是我编写的代码:

    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。再次感谢您的帮助:)