当我将 JPanel(1) 添加到我的 GridBagLayout JPanel(2) 中时,我的 JPanel(1) 会缩小为位于中间的一个小正方形。我不知道为什么会这样,因为理论上它应该有效。我认为这可能与默认的 BorderLayout 有关?因为我在某处读到 BorderLayout 将您的 JPanel 放在中间。但是我已经将我的 Layout 设置为 GridBag,所以我不知道为什么会这样。这是我的代码:
JFrame f = new JFrame("TEST");
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
f.setSize(300, screenSize.height);
f.setLocation(screenSize.width - 300, 0);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridBagConstraints gbc = new GridBagConstraints();
JPanel panel = new JPanel(new GridBagLayout());
JPanel A = new JPanel();
Dimension d = new Dimension(270, 50);
A.setSize(d);
A.setBackground(Color.GREEN);
JPanel B = new JPanel();
B.setSize(d);
B.setBackground(Color.BLUE);
gbc.gridy = 0;
panel.add(A, gbc);
gbc.gridx = 1;
panel.add(B, gbc);
f.add(panel);
f.validate();
f.repaint();
此外,当我将 A 和 B 的边框设置为 100 像素时,它们都开始显示。所以我真的很困惑!