JFileChooser与JDialog与FileDialog之间的区别

3

我需要知道这三个选项中哪一个最适合我。我的需求按重要性排序如下:

  • 轻松保存和加载文件。
  • 在选择文件时进行文件类型过滤(而不是之后)。
  • 外观和感觉与本地操作系统的外观和感觉完全相同

如果有我没有提到的更理想的对话框,请告诉我。


2
任何以J开头的都是SWING,因此不太可能与本地操作系统非常匹配。 JFileChooser允许完全过滤,而AWT FileDialog可能更好。 JDialog是一个空白对话框!! - Adam
我已经知道这些。我真正想要的是一个满足所有三个要点的解决方案。我简直无法相信Java不会提供这样一种既提供熟悉的L&F又具有良好过滤系统的解决方案。难道没有办法实现这一点吗? - Perry Monschau
1个回答

10
如果您使用的是AWT,您应该使用FileDialog。 如果您使用的是Swing,则应使用JFileChooser。 这两个类都满足您的所有要求。(JDialog只是一个空窗口,您只能在添加允许您打开文件的Component后才能使用它,而JFileChooser已经为您完成了这一点。)
保存和加载必须使用您自己的方法编写,JFileChooserFileDialog都只能用于选择文件。

FileDialogJFileChooser 都支持在选择期间使用文件过滤器。

FileDialog 的默认UI是本地操作系统的。可以使用 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())JFileChooser(实际上是整个应用程序)的UI设置为本地操作系统的UI。


FileDialog的文件过滤器很糟糕。我已经尝试过了。上次我尝试使用setLookAndFeel时,它没有改变任何东西,但我会再试一次。这可能是个人错误。 - Perry Monschau
@PerryMonschau 它可能很糟糕,但它仍然存在。你需要在创建组件之前调用 setLookAndFeel 或在你的最高级容器上调用 SwingUtilities#updateComponentTreeUI,正如 javadoc 所述。 - Jeffrey
2
不是的,看看 JFileChooser 的内部组件,它们拥有相同的 L&F(Look and Feel),但布局不是本地操作系统。然而,FileDialog 实际上确实具有本地文件过滤器系统,只是我习惯了另一个操作系统。 - Perry Monschau

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