JFilechooser外观

4

在我的swing应用程序中,我已将UI外观和感觉设置为:

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

在Windows系统中,应用程序内的用户需要使用JFileChooser来选择文件。在Windows中,JFileChooser的外观是本地的。但是在Mac上不是这样的。 JFileChooser面板的截图如下:

enter image description here

相比之下,我更喜欢像这样的外观:(这个来自于Gmail上传选项)

enter image description here

我应该将UIManager更改为什么或其他内容?
4个回答

4

以下是几种替代方案:

  • java.awt.FileDialog,如此处所示。

FileDialog

  • 自定义的ChooserUI,如此处所示。

ChooserUI

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

image


+1 给这些漂亮的截图点个赞(我没有 Mac 来制作它们 ;-)) - Guillaume Polet

3
在MacOS上,您可以使用类似于您所描述的 FileDialog 。缺点是它的可配置性要少得多。

它看起来几乎像所有平台上的本地文件选择器。 - Rishon_JR

2

由于我的Java应用程序需要打开一些专有文件包,因此在从Java 6迁移到Java 8时遇到了许多问题。

FileDialog仍然提供更好的外观,但将捆绑文件视为目录。首先修复此问题的方法是将FileDialog设置为选择目录,这仍然允许浏览文件包内部,但也允许整个文件包被选择。

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

我并不满意之前尝试的解决方案,于是我尝试了其他选项,包括VAqua LookAndFeel for macOS。这个界面看起来非常棒,但有时候并不能显示所有的UI元素(有些JTree在启动时被隐藏了,JFileChooser看起来很好,但在侧边栏中仍然没有显示网络驱动器)。

最后,我找到了一个简单的属性,设置它之后可以像在Java 6下一样使用FileDialog。当然,如果我们想选择文件而不是目录,上面的那行代码必须删除。

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

我在一个关于对话框个性化的旧示例项目中发现了这个


1

针对Windows、Linux和Mac的文件选择器实现在任何操作系统上都不是100%正确的。

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

Java在跟进操作系统变化方面存在困难。


1
还请查看 http://community.southpawtech.com/content/replacing-jfilechooser 和 http://www.java.net/node/660619。 - Neil Wightman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接