JFileChooser.showSaveDialog:所有文件都显示为灰色

我正在尝试使用JFileChooser来获取要加载和保存的文件。 提供openFileDialog()的对话框工作正常,但是当我使用saveFileDialog()方法时,对话框窗口的所有文件名都显示为灰色。 无论有没有FileFilter发生这种情况(我的例子包括一个更好地显示我所看到的内容)。

这是一个简单的程序来说明:

 import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.filechooser.FileNameExtensionFilter; public class Temp extends JFrame { public static void main(String[] args){ JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JFileChooser chooser = new JFileChooser(); FileNameExtensionFilter filter = new FileNameExtensionFilter("Text File", "txt"); chooser.setFileFilter(filter); frame.setVisible(true); chooser.showOpenDialog(null); chooser.showSaveDialog(null); } } 

这是我在“打开”对话框中看到的内容: 打开对话框

这是我在“保存”对话框中看到的: 保存对话框

尽管显示为灰色,但保存对话框中的所有文件都是可选的。

如果重要的话,我会使用Mac / Mountain Lion和Java 7。

这是预期的行为吗? 有没有办法改变这个?

(编辑:下面的MadProgrammer + trashgod评论,这看起来与其他(原生)Mac应用程序的外观+感觉一致)

我正在寻找在保存对话框中以“正常”颜色显示的.txt文件。

这是由特定于Look&Feel的FileChooserUI委托控制的,例如Mac OS X上的AquaFileChooserUI 。您可以使用不同的L&F(费力地)编写自己的FileChooserUI ,或者开发自定义文件浏览器GUI

我最终做的是使用:

 JFileChooser chooser = new JFileChooser(...); chooser.showDialog(myFrame, "Save"); 

我的保存对话框看起来像一个保存对话框, FileFilter只显示未通过测试的文件。

嗯……我认为,以你的方式展示对话框并不是最好的方式

 chooser.showOpenDialog(null); chooser.showSaveDialog(null); 

我认为这可能会产生冲突。 你为什么不尝试使用JFrame来帮助你? 尝试使用这段代码,只是为了知道问题是否是saveDialog。 然后你可以根据你的编程要求调整它。

 JFrame parentFrame = new JFrame(); JFileChooser fileChooser = new JFileChooser(); fileChooser.setDialogTitle("Specify a file to save"); int userSelection = fileChooser.showSaveDialog(parentFrame); if (userSelection == JFileChooser.APPROVE_OPTION) { File fileToSave = fileChooser.getSelectedFile(); System.out.println("Save as file: " + fileToSave.getAbsolutePath()); } 

事实上,您可以尝试使用setLookAndFeel,我记得我在使用Macbook Pro时遇到了这个问题。