我有一个带有按钮/文本字段的 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 http://www.eclipse.org/swt/。所以我认为他们并没有真正广泛地开发 API 来添加现代功能。 (呃,回答你的问题:不,你似乎无法使用 AWT 做到这一点)
Swing 的优点是它真正做到一次编写、到处运行,并且在任何地方看起来都完全相同。有些外观和感觉试图使 Swing 看起来像原生的,有些比其他更好(Mac 还不错,Windows 还可以,GTK 则不然)。不过,如果您想要一个在任何地方看起来和行为都完全相同的应用程序,Swing 可以让您做到这一点。另外,它开箱即用,无需任何额外的库。性能不太好。
Swing's 文件选择器 http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JFileChooser.html会让你做你想做的事。创建一个子类文件过滤器 http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/filechooser/FileFilter.html并打电话setFileFilter
on the JFileChooser
.
SWT 将“一次写入,随处运行”推向了相反的极端。您仍然有一个可编写的代码库,但它实际上使用每个平台上的本机小部件,因此它通常看起来像一个本机应用程序(并非在所有地方都很完美,但仍然令人印象深刻)。根据我的经验,它很快而且相当可靠。 Eclipse(和其他知名软件)使用 SWT,因此它的使用量相当大。但它确实需要特定于平台的 JAR 和 DLL。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)