我编写了一个带有awt文本字段和按钮的java代码,如果单击该按钮,我可以使用JFileChooser浏览文件。它需要检查文件是否具有“.txt”扩展名。我编写了下面的代码,但没有得到验证。
我哪里错了?请帮助确定我错在哪里。
try{
final JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog(null);
chooser.addChoosableFileFilter(new FileFilter() {
public String getDescription() {
return "*.txt";
}
public boolean accept(File filename)
{
if(filename.getName().endsWith(".txt")){
return true;
}
else{
System.out.println("Browsed dest file extension must be .txt");
return false;
}}
});
catch(Exception ex)
{
JOptionPane.showMessageDialog(f,"Exception occurred");
}
答案 0 :(得分:6)
你的问题是:
chooser.showOpenDialog(null);
停止执行代码,直到用户选择文件。添加FileFilter
后添加此行,并且传送工作正常。
小解释:
方法showOpenDialog(Component c)
阻止当前线程的执行,直到用户选择文件后执行用户操作和下一行代码。如果您在再次添加FileFilter
showOpenDialog
之后调用它,它将按预期工作。
答案 1 :(得分:4)
我建议对@Override
方法使用accept
注释 - 请参阅此链接@Override explained in Oracle Documentation。
另外,最好使用filename.getName().toLowerCase().endsWith(".txt")
代替filename.getName().endsWith(".txt")
,以确保扩展名为.TXT
的文件也会通过过滤器。