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);