我试图使按钮等宽,并且它们一起应该与它们上面的 JTextField 一样宽。 代码:
window.setLayout(new GridBagLayout());
GridBagConstraints gb = new GridBagConstraints();
gb.gridx = 0;
gb.gridy = 0;
gb.gridwidth = 3;
gb.fill = GridBagConstraints.HORIZONTAL;
gb.gridwidth = GridBagConstraints.REMAINDER;
window.add(text,gb); //adds JTextField
gb.gridwidth = 1;
gb.gridy++;
window.add(one,gb); //adds JButton
gb.gridx++;
window.add(two,gb); //adds JButton
gb.gridx++;
window.add(three,gb); //adds JButton
当我使用gb.gridwidth = GridBagConstriants.RELATIVE;
时,会发生这种情况:
提前致谢。
最佳答案
您可以通过设置 GridBagConstraints.weightx = 1.0
来实现此目的用于按钮。
另一个需要注意的关键事情是我已将文本字段和按钮添加到 JPanel
然后添加JPanel
到 JFrame
的内容 Pane 。我没有直接将文本字段和按钮添加到内容 Pane 。
import javax.swing.*;
import java.awt.*;
public class EqualWidthButtons
{
public static void main(String[] args)
{
JPanel panel = new JPanel();
panel.setLayout(new GridBagLayout());
GridBagConstraints gb = new GridBagConstraints();
gb.gridx = 0;
gb.gridy = 0;
gb.gridwidth = 3;
gb.fill = GridBagConstraints.HORIZONTAL;
panel.add(new JTextField(20), gb);
gb.gridwidth = 1;
gb.gridy++;
gb.weightx = 1.0; // This is the important line
panel.add(new JButton("1"), gb);
gb.gridx++;
panel.add(new JButton("2"), gb);
gb.gridx++;
panel.add(new JButton("3"), gb);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new GridBagLayout());
frame.getContentPane().add(panel, new GridBagConstraints());
frame.setBounds(300, 200, 400, 300);
frame.setVisible(true);
}
}
输出:
关于java - GridBagLayout 为什么第三列更大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55086638/