Rob*_*sbé 38 java swing confirmation
我正在开发一个程序,用于加载和保存文本文件中的数据,我正在向用户询问加载和保存JFileChooser的文件名.
这个问题是关于保存对话框:new JFileChooser().showSaveDialog();
.然后,用户可以在没有任何警告的情况下覆盖现有文件,这将是一个问题.
有关如何解决此问题的任何建议?我一直在寻找一些方法或选项,但我没有找到任何东西.
提前致谢.
Rob*_*sbé 78
感谢您的回答,但我找到了另一种解决方法,以这种方式覆盖了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();
}
}
Run Code Online (Sandbox Code Playgroud)
我希望这对其他人有用.
正如 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();
}
};
Run Code Online (Sandbox Code Playgroud)