我有点困惑。我从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行为。
以下是您可以做的:
- 返回到Swing的JFileChooser。如果您使用默认的系统look&感觉,他们会看起来很土
- 使用JavaFX的DirectoryChooser
- 使用第三方库,如L2FProd的Common Components,它具有JDirectoryChooser