【问题标题】:Incorrect Spacing with JPanels using BorderLayout使用 BorderLayout 的 JPanel 间距不正确
【发布时间】:2015-01-19 20:50:58
【问题描述】:

我对使用 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 的类。游戏运行时,画面如下:

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

【问题讨论】:

  • 我认为这不是您的布局问题,而是您的面板提供的布局信息的问题,也就是说,它们似乎没有覆盖 @987654324 @ 并返回适当的信息。当然我可能是错的,但是由于您没有提供 runnable example 来证明您的问题,我们所能做的就是猜测

标签: java swing jpanel layout-manager border-layout


【解决方案1】:

根据 JavaDocs 的 BorderLayout:

组件根据其首选大小和容器大小的约束进行布局。 NORTH 和 SOUTH 组件可以水平拉伸; EAST 和 WEST 组件可以垂直拉伸; CENTER 组件可以水平和垂直拉伸以填充剩余的空间。

您是否设置了首选尺寸?

如果你想垂直对齐组件,你可能想试试BoxLayout

【讨论】:

  • 谢谢!我没有设置首选尺寸。我通过使用 this.setPreferredSize(new Dimension(image.getWidth(), image.getHeight())); 解决了这个问题。在每个 JPanel 类中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多