我有一个带有用户选择文件的按钮/文本框的JDialog。这里的代码:需要FileDialog和Java中的文件类型过滤器
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)”,但我不知道该怎么做。
任何和所有的帮助表示赞赏。
事实证明,这对我来说是正确的答案,我甚至最终想通了如何风格JFileChooser,以其余匹配应用程序。显然,这只是不可能与FileDialog ...这仍然让我伤心。 – Morinar 2009-08-12 15:14:24
没有冒犯,但Mac OS X上的JFileChooser看起来很丑,你感到羞愧。 – Zizouz212 2015-06-27 00:34:02
@ Zizouz212我不认为羞耻是正确的情感。 Swing(开箱即用)在任何地方都不是很好(JFileChooser和其他所有小部件),尽管Mac可能是最不好的。 SWT更好,但更多(开发人员)工作。目前还不清楚OP使用的是哪个平台,但我认为所有这些都已经被我的答案暗示了。 – 2015-06-28 01:26:20