我试图通过选择菜单栏中的exit-option来退出我的应用程序,但是我需要在程序关闭之前得到一个提示。
我试图通过阅读类似的问题找到答案,但许多解决方案只是以#34; System.exti(0)"在menuItem的actionListener中。我需要在应用程序关闭之前获得一个消息对话框。
这里我已经声明了菜单栏,你可以看到退出选项:
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中的代码。您可以看到我已经尝试让退出选项在底部的代码中工作,但此解决方案无效:
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);
}
}
}
答案 0 :(得分:1)
您的代码需要读取 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)