65

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

有没有解决的办法?

4

3 回答 3

115

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

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

该文件不需要存在。

如果您传递带有绝对路径的文件,JFileChooser将尝试将自己定位在该目录中(如果存在)。

于 2008-12-10T16:38:58.313 回答
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 上测试。

于 2012-02-02T20:23:30.090 回答
1

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

dialog.getUI().setFileName( name )

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

于 2011-07-11T15:18:24.593 回答