【问题标题】:How to make Components align to the TOP in JPanel with BoxLayout?如何使用 BoxLayout 使组件与 JPanel 中的 TOP 对齐?
【发布时间】:2014-07-17 01:31:41
【问题描述】:

我正在开发一款名为 GalaxyWar 的游戏,并且正在尝试制作地图选择菜单。我发现了一个问题,当我在带有setAlignmentX(CENTER_ALIGNMENT) 的JPanel 上使用带有BoxLayout.Y_AXIS 的BoxLayout 时,具有指定大小的子组件(JPanel)占据了面板的整个高度(全部一起),而不是指定的高度!

这是我的代码:

scrollPane = new JScrollPane();
    scrollPane.setBounds(160, 11, 452, 307);
    add(scrollPane);

    mapContainer = new JPanel();
    mapContainer.setAlignmentX(CENTER_ALIGNMENT);
    mapContainer.setAlignmentY(JPanel.TOP_ALIGNMENT);
    mapContainer.setLayout(new BoxLayout(mapContainer, BoxLayout.Y_AXIS));
    scrollPane.setViewportView(mapContainer);

    JPanel demoPanel = new JPanel();
    demoPanel.setLayout(null);
    demoPanel.setBackground(Color.YELLOW);
    demoPanel.setSize(50, 100);
    mapContainer.add(demoPanel);

我已经研究了很长时间,但到目前为止找不到任何解决方案。

【问题讨论】:

  • 1) scrollPane.setBounds(160, 11, 452, 307); 那应该达到什么目的? Java GUI 可能必须在多个平台、不同的屏幕分辨率和使用不同的 PLAF 上工作。因此,它们不利于组件的精确放置。要为强大的 GUI 组织组件,请改用布局管理器或 combinations of them,以及 white space 的布局填充和边框。 ..(续)
  • .. (cont) 2) demoPanel.setSize(50, 100); See Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing? (Yes.) 3) 为了尽快获得更好的帮助,请发布MCVE(最小完整且可验证的示例)。
  • 我的 scrollPane 被放置在另一个具有绝对布局的 JPanel 上,这就是我使用 .setBounds() 方法的原因!
  • “我的 scrollPane 被放置在另一个具有绝对布局的 JPanel 上” 然后它们都需要修复(而不是对齐)。
  • I Researched alot of websites, finding no help, - 所有网站都建议您不要使用空布局。

标签: java swing jpanel alignment boxlayout


【解决方案1】:

试试看

setPreferredSize() 
setMaximumSize()
setMinimumSize()

将所有 3 设置为相同的值。

如果还是不行,您可以尝试将您尝试将其大小设置为固定的面板放在另一个面板中。

猜你喜欢
  • 2012-07-28
  • 2013-06-10
  • 1970-01-01
  • 2019-05-06
  • 2013-02-04
  • 2014-01-13
  • 2014-05-06
  • 2020-01-07
  • 2014-04-30
相关资源
最近更新 更多