Java:将一个菜单栏添加到borderlayout

时间:2014-12-13 12:18:02

标签: java swing

有人可以告诉我如何将我的菜单栏添加到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); 

    }

任何人都可以告诉我如何将此菜单栏添加到北边界。

1 个答案:

答案 0 :(得分:2)

一般来说,您不应该使用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变量产生影响...