看起来您可以监听属性JFileChooser
的更改FILE_FILTER_CHANGED_PROPERTY
,然后使用适当更改所选文件的扩展名setSelectedFile()
.
编辑:你是对的,这个解决方案不起作用.事实证明,当文件过滤器更改时,如果所选文件的文件类型与新过滤器不匹配,则会删除该文件.这就是为什么你在null
尝试时得到的原因getSelectedFile()
.
你考虑过稍后添加扩展吗?当我写一篇文章时JFileChooser
,我通常会在用户选择要使用的文件后添加扩展名,然后点击"保存":
if (result == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile(); String path = file.getAbsolutePath(); String extension = getExtensionForFilter(fileChooser.getFileFilter()); if(!path.endsWith(extension)) { file = new File(path + extension); } }
fileChooser.addPropertyChangeListener(JFileChooser.FILE_FILTER_CHANGED_PROPERTY, new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { FileFilter filter = (FileFilter)evt.getNewValue(); String extension = getExtensionForFilter(filter); //write this method or some equivalent File selectedFile = fileChooser.getSelectedFile(); String path = selectedFile.getAbsolutePath(); path.substring(0, path.lastIndexOf(".")); fileChooser.setSelectedFile(new File(path + extension)); } });