【问题标题】:How to do a main menu layout in Java?如何在 Java 中进行主菜单布局?
【发布时间】:2014-07-08 01:47:48
【问题描述】:

我正在与几个人一起为课堂上的一个项目设计游戏。在制作主菜单 GUI 时,我到处寻找某种方式来获得我想要的设计方式 (here),但我无法弄清楚。 CardLayout,BoxLayout,BorderLayout,GridLayout,这些都没有帮助我尝试做的事情,至少不是我实现每个布局的方式。是否有其他布局可以帮助我将标题文本和 4 个按钮向左(水平)对齐并相互垂直对齐。是否可以使用可能有 5 行和 3 列的 GridLayout 并且只填充第 2 列和第 3 列?我还希望每个对象之间和窗口边界之间有足够的填充。

这是我到目前为止所得到的,但这会将所有按钮的宽度分散到整个窗口中:

    JLabel title = new JLabel("Inkball", JLabel.LEFT);
    JPanel panel = new JPanel();
    panel.setLayout(new GridLayout(5, 3, 0, 25));
    panel.add(title);
    panel.add(playNow);
    panel.add(highScore);
    panel.add(rules);
    panel.add(exitGame);
    Container c = this.getContentPane();
    c.add(panel, BorderLayout.CENTER);

【问题讨论】:

  • 向我们展示您为解决自己的问题所做的工作(提示:邮政编码)。

标签: java swing layout


【解决方案1】:
  • BorderLayout 开头。
  • 为此,将使用GridLayoutGridBagLayoutJPanel 添加到父容器的BorderLayout.WEST 位置,此面板将用于布局右侧的选项
  • 将带有CardLayoutJPanel 添加到第一个容器的BorderLayout.CENTER 位置。这将允许您根据用户的选择在视图之间切换。
  • 您需要能够从“菜单窗格”获取有关用户选择的通知并更新“视图窗格”。您只需使用注册到“菜单窗格”的ActionListener,它充当按钮操作的代理,并通过JButtons 和ActionEventactionCommand 属性提供有关操作菜单内容的信息

查看How to Use Buttons, Check Boxes, and Radio ButtonsLaying Out Components Within a Container 了解更多详情

【讨论】:

  • +1,用于嵌套具有不同布局管理器的面板。当答案弹出时,我正在发表评论,节省了我的打字时间:)
  • 谢谢!另外,如何格式化按钮,使它们不会全部粘在一起?所有的按钮都相互接触,并且是窗口的左/下边缘,所以是否可以在每个组件之间添加一些填充?
  • @MadProgrammer 对于当前持有每个组件的实际 JPanel,我使用的是 GridLayout(5 行 1 列,否则按钮水平排列,而不是垂直排列)
  • @user2197420 尝试使用GridLayout(int rows, int cols, int hgap, int vgap),这将允许您指定要在组件之间使用的水平和垂直间隙
猜你喜欢
  • 2011-04-01
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多