在 MacOS X 上使用 FileDialog 而不是 JFileChooser 用于文件和目录

Posted

技术标签:

【中文标题】在 MacOS X 上使用 FileDialog 而不是 JFileChooser 用于文件和目录【英文标题】:Using FileDialog on MacOS X instead of JFileChooser for file AND directory 【发布时间】:2013-05-09 13:57:49 【问题描述】:

这是我的问题。我有一个在 MacOS X 上运行的 Java 应用程序。现在我正试图在 Mac App Store 上提供这个应用程序。不幸的是,Apple 总是拒绝我的应用程序,因为我没有使用本机 FileDialog 来访问文件和目录。在某些情况下,用户必须选择文件,而在其他情况下,他必须选择目录。这是我尝试创建的目录选择器:

// Go in directory chooser mode
System.setProperty("apple.awt.fileDialogForDirectories", "true");
FileDialog dialog = new FileDialog(tamaggoApp.getFrame());
dialog.setDirectory(defaultDir);
dialog.setVisible(true);

// Set back the property to file chooser.
System.setProperty("apple.awt.fileDialogForDirectories", "false");

不幸的是,它对我不起作用。似乎必须在 main() 方法中设置此属性,因此您无法在文件和目录选择之间切换。使用 Swing JFileChooser 不是一个选项,因为 Apple 会拒绝它(我试过)。

【问题讨论】:

您检查过randelshofer.ch/quaqua 的外观和感觉吗?它宣传 Mac 上的原生体验。 我认为这是错误报告:bugs.sun.com/view_bug.do?bug_id=7161437 我看到了......问题是我得到了最新的 1.7 版本,不幸的是它没有修复。另外,我在bug中看到修复版本是8,所以我想知道这是指Java的更新8还是1.8版本。 浅绿色的外观和感觉对 Apple 来说不够好。您不能使用广泛使用的列显示。此外,Apple 在拒绝消息中写道,我们必须使用本机文件对话框。 @iDev 如果情况更糟,也许你可以通过 JNI 调用实际的原生 Cocoa 文件对话框。因为您只需要传递一个字符串(路径)。 【参考方案1】:

我终于发现它一直在使用 jdk1.7u21。问题是您可以选择一个目录,但您仍然可以选择文件。我将不得不找到一种方法来避免在我查看论坛时似乎并不容易的事情。

【讨论】:

以上是关于在 MacOS X 上使用 FileDialog 而不是 JFileChooser 用于文件和目录的主要内容,如果未能解决你的问题,请参考以下文章

MS Access FileDialog 过滤器在原始负载上不起作用

使用 cx_Freeze 创建可执行文件后不断收到“filedialog”错误

让 tkinter 在带有 asdf 的 macos 上使用 python 3.x

在MacOS Sierra上安装Conda(10.x)

FYI | MacOS X上安装和使用Pajek!

TKinter (filedialog.askdirectory) 冻结 Spyder 控制台