Java 在另一个 class 中创建菜单,添加到框架

Java create menu in another class, add to frame

我尝试在另一个 class 中创建一个菜单并将其添加到我的框架中,但它不起作用(没有添加)。能帮我看看代码有什么问题吗,谢谢

Class 测试:

public class Test extends JFrame {

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

Class 菜单:

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

class 菜单项:

public class MenuItem extends JMenuItem {

    JMenuItem menuItemUndo;
    JMenuItem menuItemRedo;

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

MenuBar extends JMenuBar 并且因此您不必在其构造函数中创建新的 JMenuBar 。这更有意义:

public class MenuBar extends JMenuBar {

    JMenu menu;

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

同样的事情适用于 MenuItem class。

public class Undo extends JMenuItem {

    public MenuItem() {
        this.setText("Undo");
    }    
}
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();
    }
}

运行这个程序。我想它会给你想要的输出。