我试图让第二个单元格宽度为 2,但一些奇怪的原因 GridBagLayout 使第一个单元格宽度为 2 而不是第二个单元格。我该如何解决? 这是我的代码:
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import javax.swing.*;
public class LearnGridBagLayout {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(800,600);
JPanel panel = new JPanel();
GridBagLayout gridbaglayout = new GridBagLayout();
panel.setLayout(gridbaglayout);
frame.setContentPane(panel);
JButton button = new JButton("Hello World!");
GridBagConstraints gridbagconstraints = new GridBagConstraints();
gridbagconstraints.fill = GridBagConstraints.BOTH;
gridbagconstraints.weightx = 1;
gridbagconstraints.weighty = 1;
gridbagconstraints.gridx = 0;
gridbagconstraints.gridy = 0;
gridbagconstraints.gridwidth = 1;
gridbagconstraints.gridheight = 1;
panel.add(button,gridbagconstraints);
JButton input = new JButton();
GridBagConstraints gridbagconstraints2 = new GridBagConstraints();
gridbagconstraints2.fill = GridBagConstraints.BOTH;
gridbagconstraints2.weightx = 1;
gridbagconstraints2.weighty = 1;
gridbagconstraints2.gridwidth=2;
gridbagconstraints2.gridheight=1;
gridbagconstraints2.gridx = 1;
gridbagconstraints2.gridy=0;
panel.add(input,gridbagconstraints2);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
我试图让两个单元格填满整个宽度,让第二个单元格的宽度长度为 2。
我找到了解决方案。权重必须与网格宽度相同。这是我的代码:
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import javax.swing.*;
public class LearnGridBagLayout {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(800,600);
JPanel panel = new JPanel();
GridBagLayout gridbaglayout = new GridBagLayout();
panel.setLayout(gridbaglayout);
frame.setContentPane(panel);
JButton button = new JButton("Hello World!");
GridBagConstraints gridbagconstraints = new GridBagConstraints();
gridbagconstraints.fill = GridBagConstraints.BOTH;
gridbagconstraints.weightx = 0.25;
gridbagconstraints.weighty = 1;
gridbagconstraints.gridx = 0;
gridbagconstraints.gridy = 0;
gridbagconstraints.gridwidth = 1;
gridbagconstraints.gridheight = 1;
gridbagconstraints.anchor =GridBagConstraints.CENTER;
panel.add(button,gridbagconstraints);
JButton input = new JButton();
GridBagConstraints gridbagconstraints2 = new GridBagConstraints();
gridbagconstraints2.fill = GridBagConstraints.BOTH;
gridbagconstraints2.weightx = 0.75;
gridbagconstraints2.weighty = 1;
gridbagconstraints2.gridwidth=2;
gridbagconstraints2.gridheight=1;
gridbagconstraints2.gridx = 1;
gridbagconstraints2.gridy=0;
gridbagconstraints2.anchor =GridBagConstraints.CENTER;
panel.add(input,gridbagconstraints2);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
尝试:
gridbagconstraints2.weightx = 2;