Java 如何使用FileDialog?

Java 如何使用FileDialog?,java,awt,Java,Awt,我创建了一个界面,我想添加一个允许用户打开文件的函数。我用的是AWT。我不懂如何使用FileDialog。你能给我一个例子或一个好的链接来解释这一点吗?有几个代码示例演示如何将其用于各种不同的任务 也就是说,您可能想后退一步,检查awt是否是这项工作的最佳任务。当然,在像swing/swt这样的东西上使用它是有充分理由的,但是如果您刚刚开始使用swing,IMO将是一个更好的选择(现在有更多的组件、更多的教程,而且它是一个要求更广泛的库。)一个完整的代码示例,带有文件过滤: FileDialog

我创建了一个界面,我想添加一个允许用户打开文件的函数。我用的是AWT。我不懂如何使用FileDialog。你能给我一个例子或一个好的链接来解释这一点吗?

有几个代码示例演示如何将其用于各种不同的任务


也就是说,您可能想后退一步,检查awt是否是这项工作的最佳任务。当然,在像swing/swt这样的东西上使用它是有充分理由的,但是如果您刚刚开始使用swing,IMO将是一个更好的选择(现在有更多的组件、更多的教程,而且它是一个要求更广泛的库。)

一个完整的代码示例,带有文件过滤:

FileDialog fd = new FileDialog(yourJFrame, "Choose a file", FileDialog.LOAD);
fd.setDirectory("C:\\");
fd.setFile("*.xml");
fd.setVisible(true);
String filename = fd.getFile();
if (filename == null)
  System.out.println("You cancelled the choice");
else
  System.out.println("You chose " + filename);

要通过@TheBronx-为我添加答案,
fd.setFile(“*.txt”)在OS X上不起作用。此功能:

fd.setFilenameFilter(new FilenameFilter() {
    @Override
    public boolean accept(File dir, String name) {
        return name.endsWith(".txt");
    }
});
或者作为一款花式Java 8 lambda:

fd.setFilenameFilter((dir, name) -> name.endsWith(".txt"));

另请参阅。这很有帮助,它比
JFileChooser
快得多,可惜它不能很好地处理异常,
null
位让我大吃一惊。链接导致的所有三个代码示例都是完全相同的。。。(只是说,如果它们看起来相似,你就不会疯了…)这是一个很好的解决方案,但它在Windows上不起作用@肯诺克莱顿是真的。我认为跨平台解决方案是同时使用
setFile
setFilenameFilter
@NealEhardt是的,这就是我必须求助的。我只需检查它是否是windows并使用相关函数。发现一个“错误”:必须在setVisible()工作之前调用setFilenameFilter()!在MAC“High Sierra”上测试。