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



我有点困惑。我从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();

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

我错过了什么?

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

以下是您可以做的:

  1. 返回到Swing的JFileChooser。如果您使用默认的系统look&感觉,他们会看起来很土
  2. 使用JavaFX的DirectoryChooser
  3. 使用第三方库,如L2FProd的Common Components,它具有JDirectoryChooser

最新更新