JFileChooser.showSaveDialog(...) - 如何设置建议的文件名

时间:2008-12-10 16:30:47

标签: java swing jfilechooser

JFileChooser似乎缺少afeature:一种在保存文件时建议文件名的方法(通常被选中以便在用户开始输入时会被替换的东西)。

有解决方法吗?

3 个答案:

答案 0 :(得分:95)

如果我理解正确,您需要使用setSelectedFile方法。

JFileChooser jFileChooser = new JFileChooser();
jFileChooser.setSelectedFile(new File("fileToSave.txt"));
jFileChooser.showSaveDialog(parent);

该文件不需要存在。

编辑:如果您使用绝对路径传递文件,JFileChooser将尝试将自己定位在该目录中(如果存在)。

答案 1 :(得分:4)

setSelectedFile不能与上面提到的目录一起使用,解决方案是

    try {
        FileChooserUI fcUi = fileChooser.getUI();
        fcUi.setSelectedFile(defaultDir);
        Class<? extends FileChooserUI> fcClass = fcUi.getClass();
        Method setFileName = fcClass.getMethod("setFileName", String.class);
        setFileName.invoke(fcUi, defaultDir.getName());
    } catch (Exception e) {
        e.printStackTrace();
    }

不幸的是,setFileName不包含在UI界面中,因此需要动态调用它。仅在Mac上测试。

答案 2 :(得分:1)

如果这不起作用,这是一个解决方法:

dialog.getUI().setFileName( name )

但您应该检查选择模式是FILES_ONLY还是FILES_AND_DIRECTORIES。如果是DIRECTORIES_ONLY,则setSelectedFile()将删除文件名。