'javax.swing.JFileChooser' 中的 'setFileFilter(javax.swing.filechooser.FileFilter)' 无法应用于 '(anonymous java.io.FileFilter)'
时间: 2023-08-23 10:06:50 浏览: 219
这个错误提示的意思是你使用了一个匿名类作为文件过滤器,但是在调用 `setFileFilter` 方法时传入的参数类型应该是 `javax.swing.filechooser.FileFilter` 类型的对象,因此无法通过编译。
解决这个问题的方法是,可以创建一个继承自 `javax.swing.filechooser.FileFilter` 类的具体类,并实现其中的抽象方法。然后在创建文件选择器时,将这个具体类的实例对象作为参数传递给 `setFileFilter` 方法即可。
例如:
```java
public class TextFileFilter extends javax.swing.filechooser.FileFilter {
@Override
public boolean accept(File file) {
if (file.isDirectory()) {
return true;
}
String extension = Utils.getExtension(file);
if (extension != null && extension.equals("txt")) {
return true;
}
return false;
}
@Override
public String getDescription() {
return "Text files (*.txt)";
}
}
// 在创建文件选择器时使用 TextFileFilter 类的实例对象作为参数
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(new TextFileFilter());
```
上面的代码中,我们创建了一个 `TextFileFilter` 类,并继承自 `javax.swing.filechooser.FileFilter` 类。在 `accept` 方法中,我们定义了过滤规则,只接受后缀名为 `.txt` 的文本文件。在 `getDescription` 方法中,我们定义了文件类型的描述。最后,在创建文件选择器时,我们使用 `TextFileFilter` 类的实例对象作为参数传递给 `setFileFilter` 方法。
阅读全文