在按下Jmenu按钮时,使用java的动作侦听器退出程序

时间:2016-06-26 23:03:08

标签: java

当用户点击退出JMenu项目时,我正在尝试退出程序。

这是我用来执行动作监听器的类:

public abstract class ExitListener implements ActionListener {
    public void exit(ActionEvent e) {
        if (e.getActionCommand().equals("exit")) {
            int reply = JOptionPane.showConfirmDialog(null, "Are you sure?", "Quit?", JOptionPane.YES_NO_OPTION);
            if (reply == JOptionPane.YES_OPTION) {
                System.exit(0);
            }
        }
    }
}

这是我初始化按钮的方式:

menuBar = new JMenuBar();
gameMenu = new JMenu("Game");
this.setJMenuBar(menuBar);
menuBar.add(gameMenu);

// Creates the tabs for the Game menu and add's it to the game menu
exit = new JMenuItem("Exit");
gameMenu.add(exit);

当我选择菜单上的退出按钮时,没有任何反应。

1 个答案:

答案 0 :(得分:1)

您必须使用JMenuItem#addActionListener

exit.addActionListener(new ExitListener());

ExitListener内也有错误。

重写的方法应该被称为actionPerformed,而不是exit。这将导致编译错误。

更简单的方法是使用匿名类甚至是lambda表达式,因为我只想使用ExitListener一次。

exit.addActionListener(e -> {
        if (e.getActionCommand().equals("exit")){
           int reply = JOptionPane.showConfirmDialog(null, "Are you sure?", "Quit?", JOptionPane.YES_NO_OPTION);
                if (reply == JOptionPane.YES_OPTION){
                    System.exit(0);
                }
        }
});