Java JFileChooser-自定义文件名(创建新文件)
我可能在Java JFileChooser-自定义文件名(创建新文件),java,swing,file-io,save,jfilechooser,Java,Swing,File Io,Save,Jfilechooser,我可能在JFileChooserAPI中遗漏了一些明显的内容,但当我尝试使用JFileChooser保存文件时,我只能选择要保存到的现有文件,而不能输入新名称并保存到该文件。使用JFileChooser是否可能实现这一点,或者我是否应该使用不同的API 我有以下代码来尝试执行我正在尝试的操作: public static File getUserFile() { final SaveFileChooser fc = new SaveFileChooser(); fc
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(f.exists() && getDialogType() == SAVE_DIALOG)
如果f
不存在会发生什么情况(您希望这是可能的)
你可以试试:
if(getDialogType() == SAVE_DIALOG) {
if(f.exists()) {
// your overwrite checking
} else {
super.approveSelection();
return;
}
}
试试这个
File file = null;
String path = "";
JFileChooser chooser = new JFileChooser();
chooser.addChoosableFileFilter(new ImageFileFilter());
int returnVal = chooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
file = chooser.getSelectedFile();
path = file.getPath();
repaint();
}
}
class ImageFileFilter extends FileFilter {
public boolean accept(File file) {
if (file.isDirectory()) {
return false; //or ur code what file u want to return
}}
查看帖子,oracle举了一个例子:您能再解释一下您的解决方案吗?这不是一个SSCCE,我看不到与原始代码的关系…我是java新手,我在netbeans中创建了一个应用程序来浏览要保存的文件,我尝试了这段代码,它允许我创建一个新文件夹,所以我建议使用这段代码:)如果它可以帮助,如果不是,我真的很抱歉,这将不起作用,它应该调用showsavedilog
,否则用户将无法键入新文件名