我是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;并且'重要'?