【问题标题】:Learning Java GUIs -学习 Java GUI -
【发布时间】:2016-06-19 10:27:21
【问题描述】:

我正在学习 java 中的 GUI 编程,并尝试修改现有程序以在框架顶部添加一个新的菜单栏。

主要方法如下。 MainPanel 类扩展了 JPanel 并包含程序(基本游戏)的主要组件。

public static void main(String[] args) {
        JFrame frame = new JFrame("Sokuban");
        MainPanel panel = new MainPanel();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new BorderLayout());
        frame.setContentPane(panel);
        frame.pack();
        frame.setVisible(true);

}

我不确定是否应该添加一个新的 JPanel,将其添加到 JFrame,然后在其中添加按钮?还是在已有的panel或frame中创建一个JMenuBar,然后使用BorderLayout.NORTH来排列?

只是玩弄我在google上找到的东西,我已经分别尝试了以下sn-ps(没有放入所有代码):

JMenuBar menuBar = new JMenuBar();

frame.add(new Button("Button"), BorderLayout.SOUTH);

panel.BorderLayout.SOUTH;

  JPanel frame2 = new JPanel();
    window.add(frame2, BorderLayout.NORTH);
    JButton b1 = new JButton();
    frame2.setSize(500,500);     
    b1.setSize(400,400);
    b1.setVisible(true);
    b1.setText("Button");
    frame2.add(b1);
    frame2.setVisible(true);

我不知道我应该往哪个方向前进。非常感谢任何指针!

【问题讨论】:

标签: java swing


【解决方案1】:

第一:https://docs.oracle.com/javase/tutorial/uiswing/components/menu.html :) 这是非常简单的 JMenuBar 教程。 :) 如果您只想在 JBarMenu 上使用一个按钮: How to make a JMenu have Button behaviour in a JMenuBar

【讨论】:

  • 非常感谢 - 这个链接帮助很大!
【解决方案2】:

别那样做,看看这就是你要找的东西

此链接适用于 JMenuBar https://docs.oracle.com/javase/7/docs/api/java/awt/MenuBar.html

此链接适用于 JMenu https://docs.oracle.com/javase/7/docs/api/javax/swing/JMenu.html

此链接适用于 JMenuItem https://docs.oracle.com/javase/7/docs/api/javax/swing/JMenuItem.html

你不需要一个新的 JFrame 来创建一个菜单,你可以使用 JMenuBar();

JMenuBar myMenu = new JMenuBar(); 
//The above snippet does not create or add menus it's simply the container that holds them

JMenu fileMenu = new JMenu("File"); // This will create a menu named file

JMenuItem openChoice = new JMenuItem("Open"); /* This will create an option under 
the fileMenu named open*/

//To Actually add these things you would do this
  setJMenuBar(myMenu);
  myMenu.add(fileMenu); // This adds fileMenu to the menubar
  fileMenu.add(openChoice); // This adds openChocie to the JMenu named fileOption

现在上面的代码是关于如何设置菜单的一个非常基本的示例,我建议遵循我在此处概述的代码,并且当您学习对此进行改进时,这只是您的起点!

【讨论】:

  • 非常感谢!刚刚设法创建(一个非常基本的!)一个:)
  • 很高兴我能帮上忙 :)
【解决方案3】:

我不确定是否应该添加一个新的 JPanel,将其添加到 JFrame,然后在其中添加按钮?还是在已有的panel或frame中创建一个JMenuBar,然后使用BorderLayout.NORTH来排列?

以下是我可以与您分享的一些个人经验:

我通常会首先计划我的用户界面的外观(无论是在我的脑海中的纸上)。之后,为容器确定一个合适的布局管理器

如果 UI 很复杂,我可以拥有多个布局的嵌套面板。

但最终,我通常会有一个主面板,其中包含所有其他组件(子面板/按钮/文本字段..)。

将主面板添加到 JFrame 中。 (你可以有一个定制的 JPanel,我们很少需要定制的 JFrame)。


至于菜单栏:

  • 将 JMenuItem 添加到 JMenu
  • 将 JMenu 添加到 JMenuBar
  • 使用 frame.setJMenuBar(menuBar); 将 JMenuBar 添加到框架中

下图应该可以帮助您理解层次结构:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    • 1970-01-01
    相关资源
    最近更新 更多