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时遇到了这个问题。