使用 BorderLayout 的 JPanels 间距不正确

Incorrect Spacing with JPanels using BorderLayout

我的使用 BorderLayout 的 JPanel 有一个烦人的问题。

    this.setLayout(new BorderLayout(0, 0)); 
    JPanel panel = new JPanel(new BorderLayout(0, 0));
    panel.add(new Slot(), BorderLayout.SOUTH);
    panel.add(new MapGUI(), BorderLayout.NORTH);

    this.add(panel, BorderLayout.CENTER);

这是在我的 Inventory JPanel 的构造函数中。 Slot() 和 MapGUI() 是扩展 JPanel 的 类。游戏运行时,画面如下所示:

很明显,面板完全关闭​​,两者都不在屏幕上。我怎样才能解决这个问题?感谢您的帮助。

根据 BorderLayout 的 JavaDocs:

The components are laid out according to their preferred sizes and the constraints of the container's size. The NORTH and SOUTH components may be stretched horizontally; the EAST and WEST components may be stretched vertically; the CENTER component may stretch both horizontally and vertically to fill any space left over.

您是否设置了首选尺码?

如果要垂直对齐组件,您可能想尝试 BoxLayout