JFileChooser忽略OS X上的特殊字符文件夹

问题描述 投票:8回答:2

我有一个Java程序来浏览本地文件系统的路径,为此,我们使用了JFileChooser。如果文件夹名称为简单英语,则在Windows,Mac OS X和Linux上都可以正常工作。但是,如果我创建一个名为特殊字符的文件夹,例如-ábcEóz,那么它仅在Windows和Linux上显示该特殊字符名称,但是在OS X上我看不到那些特殊字符文件夹。它会从文件夹列表中忽略它们。

我的程序基于Java 7 update 21构建。Mac OS X版本-10.8.2

我该如何解决这个问题?

谢谢

UPDATE:我们正在使用JavaFX打包为Mac创建一个应用程序。当我们直接运行app.jar时,它将显示包含特殊字符的路径。但是,如果我们尝试使用app启动应用程序,那么它将跳过该特殊的char文件夹。

java macos javafx jfilechooser
2个回答
2
投票

我刚刚尝试了一个示例:

import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.*;

public class Trial {
    public static void main(String... args) {
        JFrame frame = new JFrame("FrameDemo");

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JLabel emptyLabel = new JLabel();

        frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);

        frame.pack();

        frame.setVisible(true);

        JFileChooser chooser = new JFileChooser();
        FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images", "jpg", "gif");
        chooser.setFileFilter(filter);
        int returnVal = chooser.showOpenDialog(frame);
        if(returnVal == JFileChooser.APPROVE_OPTION) {
            System.out.println("You chose to open this file: " +
                    chooser.getSelectedFile().getName());
        }
    }
}

在运行OS X 10.9.1JDK 1.7.0_51上。我创建了以下文件夹层次结构:~/Documents/Joyeux Naufragés/ábc Eóz“在此处输入图像说明”

为了解决您描述的问题,我还安装了您指出的JDK,JDK_1.7.0_25,我设法重现了相同的问题,这是运行u25的同一窗口的快照”在此处输入图像说明“” >>

您可以看到包含特殊字符的文件夹未显示。所以我也检查了JDK 1.7.0_40和令人惊讶的-它有效。之后,我浏览了给定版本中修复的bugs,发现与此版本中修复的mac os x有关的几个错误。其中一对夫妇(7024118、7032018、7032436、7161437)提到了JFileChooser中的问题。还有其他与mac相关的问题(共45个),其中一个涉及FileDialog。不幸的是,错误描述的链接不起作用,因此我无法发布有关该主题的更多信息,但是,即使我认为最好的解决方法是将版本更新为至少1.7.0_40,也可以解决该问题。最新版本(1.7.0_51)。

祝您工作顺利。我希望这可以帮助你。


0
投票

由于我们正在使用JavaFX打包程序构建应用程序,因此我们将自定义的Info.plist

© www.soinside.com 2019 - 2024. All rights reserved.