JFilechooser外观

时间:2012-12-10 09:30:37

标签: java macos swing look-and-feel jfilechooser

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

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

它在Windows上运行良好。在应用程序内部,用户必须使用JFileChooser选择文件。 Windows上的JFileChooser外观再次是本机外观。但不是在Mac上。 JFileChooser Panel的屏幕截图:

enter image description here

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

enter image description here

我应该将UIManager更改为什么?

4 个答案:

答案 0 :(得分:4)

有几种选择包括:

  • java.awt.FileDialog,插图为here

FileDialog

  • 自定义ChooserUI,显示为here

ChooserUI

  • 完全自定义的实现;显示了几种变体here

image

答案 1 :(得分:3)

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

答案 2 :(得分:1)

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

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

Java无法跟上操作系统的变化。

答案 3 :(得分:1)

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

FileDialog仍然提供更好的LookAndFeel,但是将捆绑的文件视为目录。对此的第一个解决方法是将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");

在旧的example project about Dialog personalization

中找到了这个