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

Posted

技术标签:

【中文标题】Java在另一个类中创建菜单,添加到框架【英文标题】:Java create menu in another class, add to frame 【发布时间】:2015-05-04 09:42:50 【问题描述】:

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

类测试:

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

【问题讨论】:

在没有添加任何功能的情况下,为什么要创建JMenuBarJMenuItem 的新子类? 【参考方案1】:

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

【讨论】:

谢谢!但是我现在如何将 actionListeners 添加到每个 menuItem 中? 与将它们添加到 JMenuBarJMenuItem 的方式相同,更多详细信息 here【参考方案2】:
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();
    

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

【讨论】:

以上是关于Java在另一个类中创建菜单,添加到框架的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Java 中创建带有子菜单的弹出菜单

如何在 Tkinter 中创建垂直菜单栏?

java 创建选项菜单。 (如果不存在,则在res文件夹中创建一个菜单目录,并在该目录中创建一个菜单资源文件

java 创建选项菜单。 (如果不存在,则在res文件夹中创建一个菜单目录,并在该目录中创建一个菜单资源文件

在 magento 1.9.2 中创建自定义顶部菜单

如何在 QMainWindow 中创建菜单栏