猿问

GridBagLayout 为什么第三列更大?

我试图使按钮的宽度相等,并且它们的总和它们之间的宽度应该与它们上面的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;


http://img.mukewang.com/62e9fbf600011fd906380481.jpg

神不在的星期二
浏览 153回答 1
1回答

有只小跳蛙

您可以通过设置按钮来实现此目的。GridBagConstraints.weightx = 1.0要注意的另一个关键事项是,我已将文本字段和按钮添加到 a 中,然后将其添加到 的内容窗格中。我没有将文本字段和按钮直接添加到内容窗格中。JPanelJPanelJFrameimport 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);  }}输出:
随时随地看视频慕课网APP

相关分类

Java
我要回答