在下面的示例中,我有一个带有 BoxLayout 的 JPanel,其中包含另一个带有 GridBagLayout 的 JPanel。
通过添加垂直胶水,我希望内面板的内容被“粘合”到外面板的顶部。
但我在中间看到标签“A”。如果我删除 GridBagLayout,A 会显示在顶部。为什么会这样?
import javax.swing.*;
import java.awt.*;
public class Test {
public static void main(String[] args) {
JPanel contentPane = new JPanel();
JFrame frame = new JFrame();
frame.setContentPane(contentPane);
contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
JPanel gridBagPanel = new JPanel();
gridBagPanel.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.NONE;
gridBagPanel.add(new JLabel("A"), gbc);
contentPane.add(gridBagPanel);
contentPane.add(Box.createVerticalGlue());
frame.setSize(800, 200);
frame.setVisible(true);
}
}