所以我在框架的顶部创建了一个带有基本菜单的简单程序,现在我只需要在每个JMenuItem后面放置动作。我努力工作代码,这是我认为可行的:
JMenu file_Menu = new JMenu("File");
JMenuItem fileExit = new JMenuItem("Exit Program");
file_Menu.add(fileExit);
fileExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
JFrame hello = new JFrame("POPUP");
hello.setSize(100,75);
hello.setDefaultCloseOperation(hello.EXIT_ON_CLOSE);
hello.setVisible(true);
}
});
main_Menu.add(file_Menu);
这似乎不起作用,我认为这个代码会在点击菜单项时创建一个小的弹出窗口。
因为我似乎无法发现任何错误。
答案 0 :(得分:5)
建议:不要添加单独的ActionListener
,而只需使用AbstractAction
:
JMenuItem fileExit = new JMenuItem(new AbstractAction("Exit Program") {
public void actionPerformed(ActionEvent ae) {
JFrame hello = new JFrame("POPUP");
hello.setSize(100,75);
hello.setDefaultCloseOperation(hello.EXIT_ON_CLOSE);
hello.setVisible(true);
}
});
我还建议,不要在弹出菜单上设置EXIT_ON_CLOSE
,而是将其设置在应用程序的主框架上,然后让操作只需调用theMainFrame.dispose()
。
答案 1 :(得分:2)
你有它的工作,但你有另一个问题。
不要这样做:
hello.setDefaultCloseOperation(hello.EXIT_ON_CLOSE);
关闭弹出框架时,整个JVM都会终止。请参阅JFrame.setDefaultCloseOperation javadocs以获得更合适的值。
答案 2 :(得分:0)
提供Action的实例(从AbstractAction扩展)到JMenuItem
答案 3 :(得分:0)
根据您发布的代码,它看起来应该可以工作,但是我们无法看到菜单项如何被使用的整个上下文。
您是否调试了代码(使用System.out.println)以查看是否正在调用ActionListener?
如果您需要更多帮助,请发布展示问题的SSCCE。
答案 4 :(得分:0)
修正了它。
忘记添加actionPerformed方法。