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

时间:2013-02-22 03:08:07

标签: java swing jfilechooser

我正在尝试使用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应用的外观+感觉一致)

3 个答案:

答案 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使用过这个问题。