【问题标题】:JFileChooser for directories on the Mac: how to make it not suck?Mac 上目录的 JFileChooser:如何让它不烂?
【发布时间】:2025-11-28 14:00:01
【问题描述】:

Mac 上“仅目录”模式下的 JFileChooser 有两个严重的严重问题:

1) 你不能用它创建目录

2) 您不能切换驱动器

这对我的安装程序应用程序来说是一个相当大的问题。据我所知,Apple 无法解决这个问题,您甚至无法激活非本机目录选择器......所以唯一的选择是找到一个免费/开源的纯 Java 替换小部件。

有人知道吗?

【问题讨论】:

  • 这是重复的:*.com/questions/845403/…
  • ...除了另一个问题没有解决“切换驱动器”部分。
  • 嗯,显然是同一个人问的,中间有3个月的间隔......
  • 是的,我也是。这次我注册了。最后一个问题没有答案就死了(不幸的是,“这是一个可用性问题”对我没有帮助)。

标签: java macos jfilechooser


【解决方案1】:

使用 java.awt.FileDialog 怎么样?它显示了一个本地文件选择器并允许创建新文件夹。

public static void main(String[] args) throws UnsupportedLookAndFeelException {
    JFrame frame = new JFrame();
    System.setProperty("apple.awt.fileDialogForDirectories", "true");
    FileDialog d = new FileDialog(frame);
    d.setVisible(true);
}

【讨论】:

  • 那是为了挑选文件,而不是目录。我认为不可能使用该小部件选择目录。
  • 我添加了缺失的行以使其允许选择文件夹。我在我的商业应用程序中使用它来让用户选择文件夹。比 JFileChooser 好很多
  • 我相信FileDialog 在 OS X 上的行为已经改变。如果将apple.awt.fileDialogForDirectories 设置为true,则实际上禁用了文件选择,因此只能选择目录。通过不设置任何系统属性,OS X 将允许您选择文件或目录。
【解决方案2】:

JFileChooser 可以查看外部驱动器。从根目录向下导航到 /Volumes 并在那里列出所有驱动器。它并不优雅,但它确实有效......

http://lists.apple.com/archives/java-dev///2008/Feb/msg00079.html

【讨论】:

    【解决方案3】:

    我使用 JFileChooser 和 showDialog 方法,我没有遇到问题。我可以使用我喜欢的名称创建目录和 sava 作为文件。如果只使用 showOpenDialog 方法,则无法创建目录

    【讨论】:

      【解决方案4】:

      我发现你可以设置一个神奇的属性,让 awt 文件选择器做正确的事情:

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

      我隐约记得以前在 OS X 10.4 上尝试过,但没有成功,但现在我在 Leopard 上,它可以,所以我是一个快乐的露营者。

      【讨论】: