为什么网格高度对我的GridBagLayout面板没有任何影响?你如何将它与重量相结合?

时间:2014-12-04 18:10:14

标签: java swing layout-manager gridbaglayout

我是GridBagLayout的新手。

虽然我非常喜欢它背后的概念,但它在实践中似乎并不那么直观。

以下面的代码为例:

public class TestGridBack {

public static void main(String[] args) {

    JFrame frame = new JFrame();
    frame.setSize(new Dimension(600, 400));
    JPanel panel = new JPanel();
    panel.setLayout(new GridBagLayout());

    //initialise constraints
    GridBagConstraints constraints = new GridBagConstraints();
    constraints.weightx = 1.0;
    constraints.weighty = 1.0;
    constraints.insets = new Insets(0, 0, 0, 0);
    constraints.fill = GridBagConstraints.BOTH;

    //set constraints for new label
    constraints.gridy = 0; //row 1
    constraints.gridx = 0; //column 1
    constraints.gridwidth = 1; //horizontal width 1
    constraints.gridheight = 1; //vertical length 1
    //add label
    JLabel label = new JLabel("Label");
    label.setHorizontalAlignment(JLabel.CENTER);
    panel.add(label, constraints);

    //set constraints for new button
    constraints.gridy = 1; //row 2
    constraints.gridx = 0; //column 1
    constraints.gridwidth = 1; //horizontal width 1
    constraints.gridheight = 5; //vertical length 5
    //add button
    panel.add(new JButton("Button"), constraints);

    frame.add(panel);
    frame.setVisible(true);
}

}

在上面的例子中,你会期望这样的事情: http://i.imgur.com/1MGrZ1E.png

但你最终得到了这个: http://i.imgur.com/o8GweGK.png

标签和按钮都占用了相同的空间。

现在我知道解决这个问题的方法是改变“重量级”。标签和按钮的比例是后者的5倍,但为什么这是必要的呢?并不是整个想法背后的' gridheight'允许这个?

当我改变重量'价值观,改变网格高度'值仍然对我的面板没有影响。

什么时候' gridheight'有用?我们如何结合“网格高度”和#39;并且'重要'?

0 个答案:

没有答案