java - JFileChooser - 自定义文件名(创建新文件)

标签 java swing file-io save jfilechooser

我可能在 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/

相关文章:

java - 具有 MVC 模式的观察者/可观察对象

java - 添加 MouseListener 而不扩展 Swing 组件

java - FX TabPane 中的 Swing 内容中断

java - 从 -main 调用时,Clojure 函数不将输出写入文件

java - readObject() 中的 ObjectInputStream 阻塞

java - 从jsp中的数据表中获取选定复选框的值

java - 在jsp页面上使用servlet形式而不重定向到servlet

java - 在 ScriptEngine 的环境/上下文中调用静态 Java 方法

.net - 在 Linux 世界中是否有等同于 .Net FileSystemWatcher 的东西?

java - 使用 Java 在文件中打印 132000 行