带有确认对话框的 JFileChooser
2022-09-01 00:24:06
我正在开发一个从文本文件中加载和保存数据的程序,并且我正在向用户询问一个在加载和保存时使用JFileChooser的文件名。
此问题与保存对话框有关:。然后,用户可以在没有任何警告的情况下覆盖现有文件,这将是一个问题。new JFileChooser().showSaveDialog();
关于如何解决这个问题的任何建议?我一直在寻找一些方法或选择,但我没有找到任何东西。
提前致谢。
我正在开发一个从文本文件中加载和保存数据的程序,并且我正在向用户询问一个在加载和保存时使用JFileChooser的文件名。
此问题与保存对话框有关:。然后,用户可以在没有任何警告的情况下覆盖现有文件,这将是一个问题。new JFileChooser().showSaveDialog();
关于如何解决这个问题的任何建议?我一直在寻找一些方法或选择,但我没有找到任何东西。
提前致谢。
感谢您的回答,但我找到了另一种解决方法,覆盖了JFileChooser的 approveSelection(),这样:
JFileChooser example = new JFileChooser(){
@Override
public void approveSelection(){
File f = getSelectedFile();
if(f.exists() && getDialogType() == SAVE_DIALOG){
int result = JOptionPane.showConfirmDialog(this,"The file exists, overwrite?","Existing file",JOptionPane.YES_NO_CANCEL_OPTION);
switch(result){
case JOptionPane.YES_OPTION:
super.approveSelection();
return;
case JOptionPane.NO_OPTION:
return;
case JOptionPane.CLOSED_OPTION:
return;
case JOptionPane.CANCEL_OPTION:
cancelSelection();
return;
}
}
super.approveSelection();
}
}
我希望这对其他人有用。
正如 AvrDragon 所说,不处理用 X 关闭的问题。我添加了一个默认大小写来处理所有不相关的选项:
final JFileChooser fc = new JFileChooser() {
private static final long serialVersionUID = 7919427933588163126L;
public void approveSelection() {
File f = getSelectedFile();
if (f.exists() && getDialogType() == SAVE_DIALOG) {
int result = JOptionPane.showConfirmDialog(this,
"The file exists, overwrite?", "Existing file",
JOptionPane.YES_NO_CANCEL_OPTION);
switch (result) {
case JOptionPane.YES_OPTION:
super.approveSelection();
return;
case JOptionPane.CANCEL_OPTION:
cancelSelection();
return;
default:
return;
}
}
super.approveSelection();
}
};