gpt4 book ai didi

java - 在 Java 中需要带有文件类型过滤器的 FileDialog

转载 作者:搜寻专家 更新时间:2023-11-01 01:05:48 25 4
gpt4 key购买 nike

我有一个带有按钮/文本字段的 JDialog,供用户选择文件。这是代码:

FileDialog chooser = new FileDialog(this, "Save As", FileDialog.SAVE );
String startDir = saveAsField.getText().substring( 0, saveAsField.getText().lastIndexOf('\\') );
chooser.setDirectory(startDir);
chooser.setVisible(true);
String fileName = chooser.getFile();

我的问题是,我不想看到所有文件过滤器,而是想提供一个自定义过滤器,例如对于 Word 文档或其他东西。我使用 setFilenameFilter() 设置了自定义 FilenameFilter,但它似乎不起作用。我确实注意到它在文档中说自定义过滤器在 Windows 中不起作用(这在 Windows XP/Vista/7 中运行)。这是我对过滤器的实现:

chooser.setFilenameFilter( new geFilter() );
public class geFilter implements FilenameFilter {
public boolean accept(File dir, String name) {
return name.endsWith( ".doc" ) || name.endsWith( ".docx" );
}
}

我是不是做错了什么?此外,我希望在框中显示说明,例如“Microsoft Word (*.doc *.docx)”,但我不确定该怎么做。

感谢任何帮助。

最佳答案

如今,AWT 并不是编写 Java GUI 应用程序的首选方式。 Sun 似乎基本上放弃了它。两个最受欢迎的选项是 Swing 和 SWT .所以我认为他们并没有真正广泛地开发 API 来添加现代功能。 (错误,回答你的问题:不,你似乎不能用 AWT 做到这一点)

Swing 的优势在于它真正做到了一次编写随处运行,并且在任何地方看起来都完全一样。有试图使 Swing 看起来原生的外观和感觉,有些比其他的更好(Mac 并不糟糕,Windows 还可以,GTK 不是)。尽管如此,如果您想要一个在任何地方看起来和行为都完全一样的应用程序,Swing 会让您做到这一点。此外,它开箱即用,无需任何额外的库。性能不是很好。

Swing 的JFileChooser会让你做你想做的。创建 FileFilter 的子类并在 JFileChooser 上调用 setFileFilter

SWT 将“一次编写,随处运行”推向了相反的极端。你仍然有一个你编写的代码库,但它实际上在每个平台上使用本地小部件,所以它通常看起来像一个本地应用程序(不是到处都是完美的,但仍然令人印象深刻)。根据我的经验,它快速且非常可靠。 Eclipse(和其他高端软件)使用 SWT,因此它的使用非常频繁。但它确实需要特定于平台的 JAR 和 DLL。

关于java - 在 Java 中需要带有文件类型过滤器的 FileDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1241984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com