Java:向边框布局添加菜单栏

标签 java swing

有人可以告诉我如何将菜单栏添加到边框布局北部。

我是这样写的

     private void makeFrame()
    {
    frame = new JFrame("Game");

    Container contentPane = frame.getContentPane();
    contentPane.setLayout(new BorderLayout());
    contentPane.add(menubar, BorderLayout.NORTH);   
    contentPane.add(new JButton("south"), BorderLayout.SOUTH);      
    contentPane.add(new JButton("center"), BorderLayout.CENTER);

    contentPane.add(new JButton("east"), BorderLayout.EAST);

    frame.pack();
    frame.setVisible(true);

    makeMenuBar();
}


    public void makeMenuBar(){


       JMenuBar menubar = new JMenuBar();

    JMenu menu; 
    JMenuItem item;


    JMenu file = new JMenu("File");
    menubar.add(file);

     item = new JMenuItem("New Game...");
    file.add(item);

    item = new JMenuItem("Save As...");
    file.add(item);

    item = new JMenuItem("Quit");
    file.add(item); 

    }

谁能告诉我如何将此菜单栏添加到北边界。

最佳答案

一般来说,您不应该使用 JFrame#setJMenuBar相反

您遇到的问题似乎是这样一个事实:您要么在初始化容器之前将菜单栏添加到容器中,要么创建一个永远不会添加到屏幕上的 JMenuBar 的新实例

private void makeFrame()
{
    frame = new JFrame("Game");

    Container contentPane = frame.getContentPane();
    contentPane.setLayout(new BorderLayout());
    // ?? Don't know what this initialised to...
    contentPane.add(menubar, BorderLayout.NORTH);   
    //...
    makeMenuBar();
}

public void makeMenuBar(){
   // A local variable with the same name...??
   JMenuBar menubar = new JMenuBar();

哦,您在 makeMenuBar 中创建的实例仅是该方法的本地实例...因此它永远不会对您正在使用的 menubar 变量产生影响在makeFrame...

关于Java:向边框布局添加菜单栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27458669/

相关文章:

java - Play框架入门

java - 如何在 Java 中使单选按钮动态更改文本

java - JOptionPane.showInputDialog 始终返回 null

java - 有没有什么方法可以将滚动 Pane 添加到 jlist 中,并将其添加到具有空布局的面板上?

java - 从服务器 Java 返回的消息中打开新的 GUI

java - Android 中使用现有项目到新项目的方法

java - 在 Java 服务器应用程序中管理多个套接字连接

java - Spring MVC 一步一步进入 Maven

java - 带字节数组的邮件附件

带键盘的 Java ListSelectionListener 接口(interface)