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