我正在尝试使用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);
}
}
这是我在“打开”对话框中看到的内容: Open Dialog
这是我在“保存”对话框中看到的内容: Save Dialog
尽管显示为灰色,但保存对话框中的所有文件都是可选的。
如果重要的话,我会使用Mac / Mountain Lion和Java 7.
这是预期的行为吗?有没有办法改变这个?
(编辑:下面MadProgrammer + trashgod的评论,这看起来与其他(原生)Mac应用的外观+感觉一致)
答案 0 :(得分:2)
我正在寻找在保存对话框中以“普通”颜色显示的
.txt
个文件。
由FileChooserUI
代表特定的特定Look&感觉,例如Mac OS X上的AquaFileChooserUI
。您可以使用不同的L& F(费力地)编写自己的FileChooserUI
,或者开发自定义File Browser GUI。
答案 1 :(得分:2)
我最终做的是使用:
JFileChooser chooser = new JFileChooser(...);
chooser.showDialog(myFrame, "Save");
我的保存对话框看起来像一个保存对话框,FileFilter
只显示未通过测试的文件。
答案 2 :(得分:0)
嗯......我认为,按照你做的方式显示对话框并不是最好的方式
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使用过这个问题。