2

我正在尝试使用 FileDialog 而不是 JFileChooser 在 OSX 上获得更自然的行为,特别重要的是收藏列,其中包含指向使用 JFileChooser 隐藏在 /Volumes 下的共享文件夹的清晰链接。

我正在使用 Java 7,因此我没有使用 Quaqua JFileChooser,因为它已经有一年没有更新了,而且我不确定它是否与 Oracles Java 7 兼容。

但是我遇到了一个问题,有没有办法让 FileDialog 只允许打开一个文件夹而不是一个文件,我设置了一个文件名过滤器,但它似乎没有效果,也没有

.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

就像 JFileChooser 一样。

public void actionPerformed(ActionEvent e)
{
    FileDialog chooser = new FileDialog(SongKong.mainWindow.frame);
    chooser.setFilenameFilter(new FolderFilter());
    chooser.setMode(FileDialog.LOAD);
    chooser.setVisible(true);
    String folderSelected = chooser.getDirectory();
    File folder = new File(folderSelected) ;
    if(folder.exists() && folder.isDirectory())
    {
        //Do something with selected folder
    }
}

class FolderFilter implements FilenameFilter
{
    public boolean accept(File dir, String name)
    {
        return new File(dir,name).isDirectory();
    }
}

(顺便说一句,也尝试了 WINdows 7 上的代码,但即使是本机对话框,它仍然看起来像 Windows XP 对话框,怎么会?)

4

1 回答 1

1

至于您的第一个问题,请查看我评论中的链接

至于第二个,我建议归结为他们链接到哪些库以提供功能。仅仅因为操作系统已更新并不意味着旧库已被删除。为了保持与旧版本应用程序的兼容性,这些库通常会维护一段时间。

你可以看看xFileDialog(通过这篇文章Alternative to JFileChooser

于 2012-08-23T21:15:17.430 回答