如何使用操作系统的默认文件选择器?JAVA

如何使用操作系统的默认文件选择器?JAVA,java,jfilechooser,Java,Jfilechooser,我只是想知道:Gmail是如何使用Windows/Mac文件选择器上传文件的?在Java中有没有办法做到这一点 就我个人而言,我不喜欢JFileChooser的外观,我认为让我的用户能够使用他们更习惯的东西会更好。提示任何人?改用旧的java.awt.FileDialog: new java.awt.FileDialog((java.awt.Frame) null).setVisible(true); GMail是一个web应用程序,最终依靠浏览器来显示这个组件。现在,一个好的解决方案是使用

我只是想知道:Gmail是如何使用Windows/Mac文件选择器上传文件的?在Java中有没有办法做到这一点


就我个人而言,我不喜欢
JFileChooser
的外观,我认为让我的用户能够使用他们更习惯的东西会更好。提示任何人?

改用旧的java.awt.FileDialog:

new java.awt.FileDialog((java.awt.Frame) null).setVisible(true);

GMail是一个web应用程序,最终依靠浏览器来显示这个组件。现在,一个好的解决方案是使用系统的本机外观,它提供了一个与您展示的非常类似的JFileChooser:

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());


编辑:Pulsar的解决方案甚至更好,因为它提供了您正在寻找的确切对话框。我不确定它是否提供了JFileChooser的所有功能。

您可以尝试使用JFileChooser,但将外观设置为平台外观:

    try {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    }catch(Exception ex) {
        ex.printStackTrace();
    }
这将使所有的swing组件看起来更漂亮

这些组件看起来总是与正在运行的操作系统中的样式相同。您可以看到一些示例:


据推测,从Java的第7版开始,Swing样式将更像操作系统的样式,但在Java 8中可能会看到它。

看看AWT的感谢!我会用这个!我从来没有真正考虑过
java.awt.*
中的组件。在swing出现之前,我们曾经考虑过很多组件尽管这个答案很古老:我不建议使用Awt文件对话框。它在Linux和Mac上坏了,Oracle不会再修复它了。因此,除非您只针对窗口用户,否则这不是一个好主意。此外,
JFileChooser
与本机外观在Windows上看起来几乎相同。虽然这是真的@Aru,但JFileChooser即使具有本机外观,在外观和功能上也与本机文件选择器相去甚远,速度较慢(至少以前是这样)。在某些情况下,我可以使用check for windows并使用它。此实现不允许您在windows上提供文件筛选器。例如,不能强制对话框仅显示*.jpg文件。据我从Java9文档中看到的,它仍然没有实现。你知道其他的API吗?