我只是想在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(""));
这是最后的解决方案谢谢大家!
答案 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
项设置gridx
,gridy
为新列/行设置适当的(从0开始):
GridBagConstraints gbc = new GridBagConstraints();
...
gbc.gridx = 3;
gbc.gridy = 3;
...
contentPane.add(textFieldName, gbc_textFieldName);