使用awt FileDialog选择目录时出现问题

时间:2015-02-10 11:56:43

标签: java awt

我有点困惑。我从JFileChooser更改为awt.FileDialog,因为我的客户希望在Windows和OSX上使用原生外观。

现在我必须以这种方式配置对话框,即用户只能打开目录而不是文件。这对OSX来说绝对没有问题,因为我只需要设置属性

System.setProperty("apple.awt.fileDialogForDirectories", "true"); 

但是对于Windows我找不到任何解决方案。我能找到的是设置FilenameFilter

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

FileDialog chooser = new FileDialog(this);
chooser.setFilenameFilter(new FolderFilter());
chooser.setMode(FileDialog.LOAD);
chooser.setVisible(true);
String folderSelected = chooser.getDirectory();

但这绝对没有影响。当我选择一个文件夹并按下"打开"按钮它仍然进入目录而不是关闭对话框并返回文件夹。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

据我所知,你没有做错任何事。这是预期的FileDialog行为。

以下是您可以做的事情:

  1. 回到Swing的JFileChooser。如果您使用默认的系统外观&感觉,他们看起来很本土。
  2. 使用JavaFX's DirectoryChooser
  3. 使用第三方库,例如L2FProd's Common Components,其中包含JDirectoryChooser。