我把一个JFileChooser
在我的程序,但只需要图像。 所以,我决定添加过滤器:
码
import javax.swing.*;
public class fileChooser {
public static void main(String[] args) {
JPanel panel = new JPanel();
final JFileChooser fc = new JFileChooser();
int file = fc.showOpenDialog(panel);
fc.addChoosableFileFilter(new ImageFilter());
fc.setAcceptAllFileFilterUsed(false);
}
}
我得到了直接从Java教程。 但是Eclipse强调以下为错误:
fc.addChoosableFileFilter(new ImageFilter());
fc.setAcceptAllFileFilterUsed(false);
有什么建议?
我把一个JFileChooser在我的程序,但只需要图像。
对于由OS上的JRE支持的类型列表,使用ImageIO
。
FileFilter imageFilter = new FileNameExtensionFilter(
"Image files", ImageIO.getReaderFileSuffixes());
类型见过 - Java的1.6 / Windows 7的
bmp
jpg
jpeg
wbmp
png
gif
注意:不要硬代码列表! 它可能因版本,以及OS更改为OS。 例如
- 我并不感到惊讶,Windows已经支持加载BMP,但这是否拿出一个苹果?
- 眼看WBMP提醒我这样的格式的存在!
这份名单将有更多的格式,如果JAI安装。
过滤器,因为它出现在选配
的参数fc.addChoosableFileFilter()
应的子类javax.swing.filechooser.FileFilter
。 例如,你可以改变你的代码
fc.addChoosableFileFilter(new FileNameExtensionFilter("Image Files", "jpg", "png", "tif");
我使用setFileFilter()。
我的代码如下(JAVA-JSE 1.6)
JFileChooser c = new JFileChooser();
//Setting Up The Filter
FileFilter imageFilter = new FileNameExtensionFilter(
"Image files", ImageIO.getReaderFileSuffixes());
//Attaching Filter to JFileChooser object
c.setFileFilter(imageFilter);
//Displaying Filechooser
int rVal = c.showOpenDialog(new JPanel());
您正在使用错误的ImageFiler类:-)
从教程中的ImageFilter的是不是从您正在导入java.awt包。 此ImageFilter中必须实现javax.swing.filechooser.FileFilter。
请检查是否有在教程中定义的其他ImageFilter类,并使用它。
适当的FileFilter的实施例:
new JFileChooser().addChoosableFileFilter(new FileFilter() {
@Override
public boolean accept(File f) {
// TODO Auto-generated method stub
return f.getName().endsWith(".jpg");
}
@Override
public String getDescription() {
return "JPEG files";
}
});
您可以使用FileFilter
类,然后使用setFileFilter()
class ImageFilter extends FileFilter {
@Override
public boolean accept(File pathname) {
String filename = pathname.getName();
if (pathname.isDirectory()) {
return true;
} else if (filename.endsWith("jpg'") || filename.endsWith("jpeg") || filename.endsWith("png") || filename.endsWith("gif")) {
return true;
} else {
return false;
}
}
现在,在你的主类:
fc.setFileFilter(new ImageFilter());