JFileChooser - 自定义文件名(创建新文件)
Posted
技术标签:
【中文标题】JFileChooser - 自定义文件名(创建新文件)【英文标题】:JFileChooser - Custom file name (create new file) 【发布时间】:2012-12-06 07:08:51 【问题描述】:我可能在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;
【问题讨论】:
查看this 帖子和this 有一个oracle做的例子:docs.oracle.com/javase/tutorial/displayCode.html?code=http://… 【参考方案1】:检查您的if
条件:
if(f.exists() && getDialogType() == SAVE_DIALOG)
如果f
不存在会发生什么(这是您希望实现的)?
你可以试试:
if(getDialogType() == SAVE_DIALOG)
if(f.exists())
// your overwrite checking
else
super.approveSelection();
return;
【讨论】:
【参考方案2】:试试这个
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
【讨论】:
您能再解释一下您的解决方案吗?它不是 SSCCE,我看不到与原始代码的关系... 我是 java 新手,我在 netbeans 中创建了一个应用程序来浏览要保存的文件,我尝试了这段代码,它让我也可以创建一个新文件夹,所以我建议使用这段代码 :) 如果它可以提供帮助不是我真的很抱歉 这不起作用,它应该调用showSaveDialog
否则用户将无法输入新文件名以上是关于JFileChooser - 自定义文件名(创建新文件)的主要内容,如果未能解决你的问题,请参考以下文章
简单的 JFileChooser FileFilter 不起作用
如何检查文件是不是存在,那么创建新文件的过程是啥? [复制]