更改GridBagLayout中的网格大小

时间:2011-12-04 00:02:37

标签: java swing gridbaglayout

我只是想在java swing中为GridBagLayout添加3个居中的垂直按钮。现在我相信默认的网格大小是3x3。我想知道我是否可以更改它并添加更多列和行。我只是想在一个窗格中制作3个等距间隔的中心。

    pane.setLayout(new GridLayout(10,1));
    // Insert a space before the first button
    for (int i = 1; i < 6; i++ ){
        pane.add(new JLabel(""));
    }
    pane.add(new Button("1"));
    pane.add(new Button("2"));
        pane.add(new Button("3"));
    // Insert a space after the last button
    pane.add(new JLabel(""));

这是最后的解决方案谢谢大家!

2 个答案:

答案 0 :(得分:6)

我同意@Chris GridLayout会更容易:

myPanel.setLayout(new GridLayout(5,1));
// Insert a space before the first button
add(new JLabel(""));
add(new Button("1"));
add(new Button("2"));
add(new Button("3"));
// Insert a space after the last button
add(new JLabel(""));

答案 1 :(得分:4)

只需在权重属性中添加更多值即可。这告诉它如何布置网格袋 - 0意味着只使用所需的空间,然后根据给定的权重分割剩余的空间。

GridBagLayout gbl = new GridBagLayout();
...
gbl.columnWeights = new double[] {1.0, 1.0, 1.0, 1.0, Double.MIN_VALUE};
gbl.rowWeights = new double[] {1.0, 1.0, 1.0, 1.0, Double.MIN_VALUE};
...
contentPane.setLayout(gbl_contentPane);

然后为GridBagConstraints项设置gridxgridy为新列/行设置适当的(从0开始):

GridBagConstraints gbc = new GridBagConstraints();
...
gbc.gridx = 3;
gbc.gridy = 3;
...
contentPane.add(textFieldName, gbc_textFieldName);