2014-12-13 87 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

相關問題