3

在我的 Swing 应用程序中,我将 UI 外观设置为:

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

它在 Windows 上运行良好。在应用程序内部,用户必须使用JFileChooser. Windows 上的JFileChooser外观又是原生的。但不是在 Mac 上。JFileChooser 面板的屏幕截图:

在此处输入图像描述

但相反,我更喜欢这样的东西:(这个取自gmail中的上传选项)

在此处输入图像描述

我应该将 UIManager 更改为什么或其他什么?

4

4 回答 4

4

几种替代方法包括:

文件对话框

选择器UI

  • 完全自定义的实现;这里显示了几个变体。

图片

于 2012-12-10T10:41:06.623 回答
3

在 MacOS 上,您可以使用FileDialog看起来像您所描述的内容。缺点是它的可配置性要低得多。

于 2012-12-10T10:28:24.677 回答
1

Windows、Linux 和 Mac 的文件选择器实现并非 100% 适合任何操作系统

不幸的是,如果您真的想要这个,您需要寻找 JFileChooser 的替代品,或者您需要编写自己的外观和费用。

Java 难以跟上操作系统的变化。

于 2012-12-10T09:41:57.647 回答
1

在从 Java 6 迁移到 Java 8 时,我遇到了很多麻烦,因为我的 Java 应用程序必须打开一些专有文件包。

FileDialog 仍然提供更好的 LookAndFeel,但将捆绑的文件视为目录。解决此问题的第一个方法是将 FileDialog 设置为选择目录,这仍然允许在文件包内导航,但也允许将包作为一个整体进行选择。

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

我对解决方案不太满意,我尝试了其他选项,包括macOS 的 VAqua LookAndFeel,它看起来非常棒,但有时没有显示所有 UI 元素(一些 JTree 在启动时被隐藏,JFileChooser 看起来很棒,但仍然没有t 显示边栏中的网络驱动器)。

最后我发现了一个简单的属性——当设置时——允许像在 Java 6 下一样使用 FileDialog。当然,如果我们想选择文件而不是目录,则必须删除上面的行。

System.setProperty("apple.awt.use-file-dialog-packages", "true");

在一个关于 Dialog 个性化的旧示例项目中找到了这个

于 2018-11-26T13:00:18.323 回答