【问题标题】:Adding multiple JPanel to a JFrame将多个 JPanel 添加到 JFrame
【发布时间】:2012-05-02 00:35:16
【问题描述】:

好的,现在我有一个包含 JLayeredPane 的 JFrame。所以它现在运行一个游戏 GUI。我想在这个框架的一侧添加按钮,以便我可以通过按钮接收用户的输入。 有什么想法吗?

class mapGUI extends JFrame{
        layeredPane = new JLayeredPane();
    mapSize = new Dimension(mapColumn * 16 , mapRow * 16);

    layeredPane.setPreferredSize(mapSize);
    //Adding the layeredPane to the frame.
    getContentPane().add(layeredPane);

    //Adds the appropriate labels to the panels and adds them to the layeredPane.
    addPlayerPos();
    addDungeonItems();
    addDungeonFloor();

    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setResizable(false);
    pack();
    setLocationRelativeTo(null);
    setVisible(true);
}

这是我创建 JFrame 并向其中添加 JLayeredPane 的代码部分。

【问题讨论】:

  • 抱歉不知道,没有发布SSCCE 的想法也证明了您的问题
  • 您想在哪里添加按钮以及您打算如何使用它们?
  • “现在好点了吗?”不是像@mKorbel建议的那样是SSCCE!
  • 我想将它们添加到右侧。我想添加 5 个按钮。

标签: java swing layout jframe


【解决方案1】:

1) 不要使用JLayeredPane,因为最多有6层限制,使用JLayer (Java7)基于JXLayer (Java6)

2) 使用JLayeredPane 大约是setSize / setBounds,这对于可调整大小的Container 来说并不合适

3) 使用CardLayout 代替JLayeredPane

4) 或使用JTabbedPane

【讨论】:

  • +1 表示JLayer。如果我错了也请纠正我。 CardLayout 不能一次显示多张卡片,因此它不适合使用多层的游戏。
  • @Nitin Chhajer 正确,你是对的,也许我错了(我仅将 JLayeredPane 用于 UIManagers hack)但我认为很难将 JLayeredPane 用于游戏,(请纠正我关于渲染问题的任何人)这就是 JLayer 存在的原因 ...
【解决方案2】:

如果您想在整个游戏中使用按钮,您可以使用 BorderLayout 并将按钮放在布局的东/西,然后将 LayeredPane 添加到中心。如果按钮需要与游戏屏幕重叠,您可以使用layeredPaneObj.add(buttonPanel,new Integer(0)) 这将使面板保持在顶部。

【讨论】:

  • @JakubZaverka 请阅读问题。 “将按钮添加到此框架的一侧”而不是框架的顶部
【解决方案3】:

您应该首先了解有关layout managers 的基本知识。 如前所述,请根据您的要求特别查看 BorderLayout

【讨论】:

    猜你喜欢
    • 2011-09-13
    • 2013-12-12
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多