【发布时间】:2017-12-23 15:03:10
【问题描述】:
我正在尝试绘制一个带有按钮的面板,看起来像这样:
我这样创建“buttonPanel”:
buttonPanel.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.weightx = 0;
gbc.weighty = 0;
gbc.gridx = 0; gbc.gridy = 0;
gbc.gridwidth = 1; gbc.gridheight = 2;
buttonPanel.add(new JButton("A0"), gbc);
gbc.gridx = 1; gbc.gridy = 0;
gbc.gridwidth = 1; gbc.gridheight = 2;
buttonPanel.add(new JButton("A1"), gbc);
gbc.gridx = 2; gbc.gridy = 0;
gbc.gridwidth = 2; gbc.gridheight = 2;
buttonPanel.add(new JButton("A2"), gbc);
gbc.gridx = 0; gbc.gridy = 2;
gbc.gridwidth = 3; gbc.gridheight = 2;
buttonPanel.add(new JButton("A3"), gbc);
gbc.gridx = 3; gbc.gridy = 2;
gbc.gridwidth = 1; gbc.gridheight = 2;
buttonPanel.add(new JButton("A4"), gbc);
但是结果是这样的:
由于按钮“A3”的gridwidth=3,它应该到达按钮“A2”的中间?
有什么帮助吗?
编辑1: 增加面板大小或在按钮上设置更长的文本不会改变任何内容:
编辑2: 为按钮“A2”和“A3”设置 weightx=1 有助于:
这对我来说是可以接受的,尽管如果按钮“A4”与按钮“A0”和“A1”具有相同的宽度会很好
【问题讨论】:
-
如果增加外部面板的宽度(以 gridbag 作为布局的 jpanel)会发生什么?你们中的一些人使用 Ax 以外的其他文本 - 这需要更多空间,尤其是 A2?
-
没什么..结果保持不变
-
将 A3 和 A2 的权重设置为 1.0。
-
我将此作为真实答案,因此您可以接受。将 A4 设置为与 A0 和 A1 相同的尺寸并不容易,也许设置 A4 的最大尺寸可能会有所帮助。
标签: java swing layout-manager gridbaglayout