JFileChooser
似乎缺少一个功能:一种在保存文件时建议文件名的方法(通常被选中的东西,以便在用户开始输入时被替换)。
有没有解决的办法?
如果我理解正确,您需要使用该setSelectedFile
方法。
JFileChooser jFileChooser = new JFileChooser();
jFileChooser.setSelectedFile(new File("fileToSave.txt"));
jFileChooser.showSaveDialog(parent);
该文件不需要存在。
如果您传递带有绝对路径的文件,JFileChooser
将尝试将自己定位在该目录中(如果存在)。
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 上测试。
如果这不起作用,这里有一个解决方法:
dialog.getUI().setFileName( name )
但是你应该检查选择模式是FILES_ONLY
还是FILES_AND_DIRECTORIES
。如果是DIRECTORIES_ONLY
,setSelectedFile()
则将删除文件名。