2014-12-13 95 views
0

有人可以告诉我如何将我的菜单栏添加到borderlayout NORTH。Java:将菜单栏添加到borderlayout

我已经这样写过了。

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

    } 

有谁能告诉我如何将这个菜单栏添加到边界北部请。

回答

2

一般来说,你应该不会,相反,你应该使用JFrame#setJMenuBar代替

您所遇到的问题似乎是事实,你要么加入菜单栏中容器之前它的初始化或正在创建这是从来没有加入到屏幕

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实例的JMenuBar一个新的实例是当地唯一的方法......所以它不会对menubar变量,你的效果正在使用makeFrame ...

+0

我使Menubar成为一个领域,它的工作原理!谢谢 :) – AW90 2014-12-13 12:43:03