我可以使用java.awt.FileDialog只允许用户选择文件夹

时间:2012-08-23 21:07:26

标签: java macos awt jfilechooser

我正在尝试使用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上尝试了代码,但仍然看起来像Windopws XP对话框,即使它是一个本地对话框,为什么会这样?)

1 个答案:

答案 0 :(得分:1)

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

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

您可以查看xFileDialog(通过此帖子Alternative to JFileChooser