Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:向borderlayout添加菜单栏_Java_Swing - Fatal编程技术网

Java:向borderlayout添加菜单栏

Java:向borderlayout添加菜单栏,java,swing,Java,Swing,谁能告诉我如何将菜单栏添加到borderlayout NORTH 我是这样写的 private void makeFrame() { frame = new JFrame("Game"); Container contentPane = frame.getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(menubar, BorderLayout.

谁能告诉我如何将菜单栏添加到borderlayout NORTH

我是这样写的

     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); 

    }

有谁能告诉我如何将此菜单栏添加到border north吗。

一般来说,您不应该,而是应该使用

您遇到的问题似乎是,您要么在初始化之前将菜单栏添加到容器中,要么创建一个从未添加到屏幕中的新实例
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
中创建的实例只是该方法的本地实例……因此它永远不会对您在
makeFrame
中使用的
menubar
变量产生影响。…

我将menubar设置为一个字段,它可以工作!谢谢:)