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

标签 java macos awt jfilechooser

我正在尝试使用 FileDialog 而不是 JFileChooser 来在 OSX 上获得更自然的行为,特别重要的是“Collection 夹”列具有指向使用 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 对话框,尽管它本来是一个 native 对话框,怎么会这样呢?)

最佳答案

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

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

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

关于java - 我可以使用 java.awt.FileDialog 只允许用户选择文件夹吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12099980/

相关文章:

java - ANTLR myParser.java 未生成

macos - 在 OS X 上使用 Clang 编译时如何增加堆栈大小?

java - 在 Jython 中绘制像素

java - 使用 ScrollableResults 和 hibernate

java - 有了HashMap和Concurrent HashMap,WeakHashMap有什么用?

c++ - Mac OS X 和静态 boost 库 -> std::string 失败

python - 安装 Scikits.audiolab 时出错

java - 按钮启用为 0

java - 奇怪的 Java Canvas 大小输出

java - hibernate-spring 集成中一对多映射错误