【问题标题】:Alternative to JFileChooserJFileChooser 的替代品
【发布时间】:2010-10-20 01:13:45
【问题描述】:

我请求对当前使用 JFileChooser 的小程序进行一些更改。
主要的抱怨之一是文件选择器使用起来很麻烦,因为它的行为与本机小部件不同,尤其是在导航到根级别时。

所以,知道 JFileChooser 遭受的所有其他问题(如 Windows 上的 zip 文件缓存......),我想知道在 java 世界中是否存在可行的替代方案。

当然,有使用本机小部件的 SWT,但将小程序大小增加 25 并不是一个真正的选择。那么,有没有更好的纯 java 实现的文件选择器呢?

【问题讨论】:

  • 有一种方法可以打开标准的 Windows 打开对话框并保存为对话框。我只是不记得该怎么做。

标签: java user-interface jfilechooser


【解决方案1】:

AWT FileDialog 实际上确实使用了本机组件,但与大多数 AWT 与 Swing 的问题一样,它的灵活性和可定制性远不如 Swing 的 JFileChooser。所以有一个权衡:JFileChooser 可能有一个笨重的用户界面,但它通常更适合大多数用途。如果你真的希望你的文件选择对话框看起来和感觉像原生对话框,那么你可以使用FileDialog

【讨论】:

    【解决方案2】:

    我知道这有点晚了,但它可能会对其他用户有所帮助。您可以将应用程序的 UI 自定义为操作系统的 UI:

    try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception e) {e.printStackTrace();     }
    

    【讨论】:

    • 我在这里也很晚了,但值得注意的是,虽然这做得很好,但使用系统外观的 OS X 上的 JFileChooser 一点也不让人想起本机对话框。
    • 在Java中有一种方法可以让它打开窗口打开并保存文件对话框窗口?我只是不记得它是如何完成的。
    【解决方案3】:

    你也可以试试XFileDialog。还没有尝试太多,但看起来值得评估。

    【讨论】:

    • 这很酷,但它仅适用于 Windows 并使用 JNI。是否有跨平台替代方案?
    【解决方案4】:

    如果可用,我在 JavaFX 的文件选择器周围写了一个 wrapper。如果包含在您的应用程序中,您可以替换

    JFileChooser fileChooser = new JFileChooser();
    

    JFileChooser fileChooser = new NativeJFileChooser();
    

    然后它将使用底层平台的本机(和现代)文件选择器。并非一切都 100% 相同,因此请确保事后对其进行测试,但大多数事情都应该顺利进行。

    【讨论】:

    • 谢谢@Veluria!我的初始测试很棒——它使用操作系统对话框,就像任何应用程序都应该能够做的那样,并且似乎运行良好(检查了 OSX 和 Win10)
    【解决方案5】:

    正如@htw 所说,如果外观是您主要关心的问题,请使用 FileDialog。通过使用 FileDialog 请注意,有很多方便的方法您将无法使用...

    我用过VFSJFileChooser 几次。它没有 JFileChooser 错误(由于 zip 文件加载缓慢,仅限 Windows),但界面不是“原生”的。

    【讨论】:

      猜你喜欢
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 2012-01-25
      • 2015-08-05
      • 2011-01-01
      相关资源
      最近更新 更多