当用户点击退出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);
当我选择菜单上的退出按钮时,没有任何反应。
答案 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);
}
}
});