2015-05-04 59 views
2

我嘗試在另一個類中創建菜單並將其添加到我的框架中,但它不起作用(沒有添加)。你能幫我看看代碼有什麼問題,謝謝。Java在另一個類中創建菜單,添加到框架

類檢驗:

public class Test extends JFrame { 

    public Test() {     
     MenuBar menuBar = new MenuBar();     
     setJMenuBar(menuBar);    
     pack(); 
     setVisible(true); 
    } 
} 

類菜單:

public class MenuBar extends JMenuBar { 

    JMenuBar menuBar; 
    JMenu menu; 

    public MenuBar() { 
     menuBar = new JMenuBar(); 
     menu = new JMenu("File"); 
     menuBar.add(menu);    
     MenuItem menuItem = new MenuItem(); 
     menu.add(menuItem); 
    } 
} 

類菜單項:

public class MenuItem extends JMenuItem { 

    JMenuItem menuItemUndo; 
    JMenuItem menuItemRedo; 

    public MenuItem() { 
     menuItemUndo = new JMenuItem("Undo"); 
     menuItemRedo = new JMenuItem("Redo"); 
    }  
} 
+0

爲什麼當你還沒有添加任何功能時,你會創建'JMenuBar'和'JMenuItem'的新子類? – Blip

回答

2

MenuBar延伸JMenuBar正因爲如此,你不必創建一個新的其構造函數內部爲JMenuBar。這更有意義:

public class MenuBar extends JMenuBar { 

    JMenu menu; 

    public MenuBar() { 
     menu = new JMenu("File"); 
     this.add(menu);    
     ..... 
    } 
} 

同樣的事情適用於MenuItem類。

public class Undo extends JMenuItem { 

    public MenuItem() { 
     this.setText("Undo"); 
    }  
} 
+0

謝謝! 但是,我現在如何將actionListeners添加到每個menuItem? – user2939293

+0

與將它們添加到「JMenuBar」或「JMenuItem」相同的方式,更多詳細信息[https://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html] – Titus

+0

感謝您你的幫助 ! – user2939293

0
class Test extends JFrame { 

    public Test() {     
     MenuBar menuBar = new MenuBar();     
     setJMenuBar(menuBar);    
     pack(); 
     setVisible(true); 
    } 
} 


class MenuBar extends JMenuBar { 

    JMenu menu; 
    JMenuItem menuItemUndo; 
    JMenuItem menuItemRedo; 

    public MenuBar() { 
     menu = new JMenu("File"); 
     menuItemUndo = new JMenuItem("Undo"); 
     menuItemRedo = new JMenuItem("Redo"); 
     menu.add(menuItemUndo); 
     menu.add(menuItemRedo); 
     this.add(menu); 
    } 
    public static void main(String[] args) { 
     new Test(); 
    } 
} 

運行這個程序。我認爲它會給你想要的輸出。