Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JFilechooser外观_Java_Macos_Swing_Look And Feel_Jfilechooser - Fatal编程技术网

Java JFilechooser外观

Java JFilechooser外观,java,macos,swing,look-and-feel,jfilechooser,Java,Macos,Swing,Look And Feel,Jfilechooser,在我的swing应用程序中,我将UI外观设置为: UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 而且它在Windows上运行良好。在应用程序内部,用户必须使用JFileChooser选择文件。windows上的JFileChooser外观也是本机外观。但不是在Mac上。 JFileChooser面板的屏幕截图: 但相反,我更喜欢这样的东西:(这是取自gmail中的上传选项) 我应该将UIManage

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

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
而且它在Windows上运行良好。在应用程序内部,用户必须使用
JFileChooser
选择文件。windows上的
JFileChooser
外观也是本机外观。但不是在Mac上。 JFileChooser面板的屏幕截图:

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


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

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

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


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

在MacOS上,您可以使用与您描述的类似的。缺点是它的可配置性差得多。

有几种备选方案包括:

  • java.awt.FileDialog
    ,如图所示

  • 显示一个自定义的
    选择器ui

  • 完全定制的实现;显示了几种变化

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

FileDialog仍然提供了更好的外观,但将捆绑文件视为目录。第一个修复方法是将FileDialog设置为选择目录,这仍然允许在文件包内导航,但也允许选择整个文件包

System.setProperty("apple.awt.fileDialogForDirectories", "true");
我对这个解决方案不太满意,我尝试了其他选项,包括看起来非常棒但有时没有向我显示所有UI元素(一些JTree在启动时被隐藏,JFileChooser看起来不错,但仍然没有在侧边栏中向我显示网络驱动器)

最后,我找到了一个简单的属性,当设置该属性时,它允许使用FileDialog,就像在Java6下一样。当然,如果我们想选择文件而不是目录,必须删除上面的行

System.setProperty("apple.awt.use-file-dialog-packages", "true");
在一个旧的

中找到了这个

另请参见+1以获得漂亮的屏幕截图(没有Mac电脑来制作;-))