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");
【问题讨论】:
在没有添加任何功能的情况下,为什么要创建JMenuBar
和JMenuItem
的新子类?
【参考方案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 中? 与将它们添加到JMenuBar
或 JMenuItem
的方式相同,更多详细信息 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 创建选项菜单。 (如果不存在,则在res文件夹中创建一个菜单目录,并在该目录中创建一个菜单资源文件