6

我正在尝试使用JFileChooser来获取文件以进行加载和保存。出现的对话框openFileDialog()工作正常,但是当我使用该saveFileDialog()方法时,对话框窗口的所有文件名都是灰色的。有或没有 a 都会发生这种情况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 + 垃圾神下面的评论,这似乎与其他(本机)Mac 应用程序的外观和感觉一致)

4

3 回答 3

2

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

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

于 2013-02-22T03:44:44.383 回答
2

我最终做的是使用:

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

我的保存对话框看起来像一个保存对话框,FileFilter只有未通过测试的文件才会变灰。

于 2015-08-19T20:37:41.350 回答
0

嗯...我认为,以您的方式显示对话框并不是最好的方式

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

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

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

于 2013-02-22T03:17:17.420 回答