我可能在 JFileChooser
API 中遗漏了一些明显的东西,但是当我尝试使用 JFileChooser
保存文件时,我只能选择预先存在的文件来保存文件保存到,而不是输入一个新名称并保存到那个。这甚至可以使用 JFileChooser
还是我应该使用不同的 API?
我有这段代码来尝试做我正在尝试的事情:
public static File getUserFile() {
final SaveFileChooser fc = new SaveFileChooser();
fc.setAcceptAllFileFilterUsed(false);
for(FileFilter ch : FileFilterUtils.getAllFilters()) {
fc.addChoosableFileFilter(ch);
}
int option = fc.showSaveDialog(JPad.getFrame());
if (option == JFileChooser.APPROVE_OPTION) {
return fc.getSelectedFile();
}
return null;
}
public static class SaveFileChooser extends JFileChooser {
private static final long serialVersionUID = -8175471295012368922L;
@Override
public void approveSelection() {
File f = getSelectedFile();
if(f.exists() && getDialogType() == SAVE_DIALOG){
int result = JOptionPane.showConfirmDialog(JPad.getFrame(), "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;
}
}
}
}
最佳答案
检查您的if
条件:
if(f.exists() && getDialogType() == SAVE_DIALOG)
如果 f
不存在(这是您希望的)会怎样?
你可以试试:
if(getDialogType() == SAVE_DIALOG) {
if(f.exists()) {
// your overwrite checking
} else {
super.approveSelection();
return;
}
}
关于java - JFileChooser - 自定义文件名(创建新文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13738625/