JFileChooser
似乎缺少afeature:一种在保存文件时建议文件名的方法(通常被选中以便在用户开始输入时会被替换的东西)。
有解决方法吗?
答案 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()
将删除文件名。