我正在尝试通过选择菜单栏中的退出选项来退出我的应用程序,但我需要在程序关闭之前得到提示。
我试图通过阅读类似的问题在这里找到答案,但许多解决方案只是在menuItem的actionListener中以"System.exti(0("结尾。我需要在应用程序关闭之前收到一个消息对话框。
在这里,我声明了菜单栏,您可以看到退出选项:
JMenuBar menuBar = new JMenuBar();
JMenu archiveMenu = new JMenu("Archive");
menuBar.add(archiveMenu);
newMap = archiveMenu.add("New Map");
newMap.addActionListener(new ArchiveListener());
loadPlaces = archiveMenu.add("Load Places");
loadPlaces.addActionListener(new ArchiveListener());
save = archiveMenu.add("Save");
save.addActionListener(new ArchiveListener());
exit = archiveMenu.add("Exit");
exit.addActionListener(new ArchiveListener());
这是我来自 ArchiveListener 的代码。您可以看到我试图让 exit 选项在最底部的代码中工作,但此解决方案不起作用:
class ArchiveListener implements ActionListener {
public void actionPerformed(ActionEvent ave) {
if (ave.getSource() == newMap) {
int result = fc.showOpenDialog(null);
if (result != JFileChooser.APPROVE_OPTION) {
return;
} else {
File file = fc.getSelectedFile();
String filePath = file.getAbsolutePath();
display.setImage(filePath);
validate();
repaint();
}
} else if (ave.getSource() == loadPlaces) {
int result = fc.showOpenDialog(null);
if (result != JFileChooser.APPROVE_OPTION) {
return;
} else {
loadPlaces();
}
}
if (ave.getSource() == save) {
if (fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
// File file = fc.getSelectedFile();
}
try {
FileWriter outfile = new FileWriter("jarvafaltet.places.txt");
PrintWriter out = new PrintWriter(outfile);
for (Place p : positionList.values()) {
System.out.println(p);
out.println(p);
out.close();
}
outfile.close();
} catch (FileNotFoundException e) {
JOptionPane.showMessageDialog(null, "Filen kan ej hittas");
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "Fel" + e.getMessage());
}
}
if ("exit".equals(ave.getActionCommand())) {
int dialogButton = JOptionPane.YES_NO_OPTION;
JOptionPane.showConfirmDialog(null, "Would You Like to Save your Previous Note First?", "Warning", dialogButton);
if (dialogButton == JOptionPane.YES_OPTION) {
System.exit(NORMAL);
}
}
}
你的代码需要读取showConfirmDialog 返回的值:
int dialogButton = JOptionPane.showConfirmDialog(null, "Would You Like to Save your Previous Note First?", "Warning", JOptionPane.YES_NO_OPTION);
if (dialogButton == JOptionPane.YES_OPTION) {
System.exit(NORMAL);
}
你需要阅读javadoc :o(