JFileChooser.showSaveDialog(…) – 如何设置build议的文件名

臃肿的JFileChooser似乎缺less一个function:在保存文件(通常被选中以便在用户开始键入时会被replace的文件)时提示文件名的一种方法。

有没有解决的办法?

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

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

该文件不需要存在。

编辑:如果你传递一个绝对path的文件, JFileChooser将尝试自己在该目录(如果存在)。

如上所述,setSelectedFile不适用于目录,解决scheme是

  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界面中,因此需要dynamic调用它。 只在mac上testing过。

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

 dialog.getUI().setFileName( name ) 

但是你应该检查select模式是FILES_ONLY还是FILES_AND_DIRECTORIES 。 如果是DIRECTORIES_ONLY ,那么setSelectedFile()将剥离文件名。

大! 在Java 1.6.35中也可以在Windows中完美工作。 我的情况只有一点变化:

 FileChooserUI fcUi = jFileChooser.getUI(); Class<? extends FileChooserUI> fcClass = fcUi.getClass(); Method setFileName = fcClass.getMethod("setFileName", String.class); setFileName.invoke(fcUi, defaultDirectoryName);