今天突然想到打开对话框中的文件过滤是如何实现,查了下资料,发现比较简单的就能实现。下面是核心代码:private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {JFileChooser chooser=new JFileChooser();chooser.setCurrentDirectory(new File("."));final List list=new ArrayList();list.add("jpg");list.add("png");list.add("png");
chooser.setFileFilter(new javax.swing.filechooser.FileFilter() {
@Overridepublic boolean accept(File f) {if(f.isDirectory())return true;String name=f.getName();int p=name.lastIndexOf('.');if(p==-1)return false;String suffix=name.substring(p+1).toLowerCase();return list.contains(suffix);}
@Overridepublic String getDescription() {return "image files";}});int r=chooser.showOpenDialog(this);if(r!=JFileChooser.APPROVE_OPTION)return;
}当然这段代码唯一实现的就是过滤功能。里面用了一个FileFilter匿名类实现文件的过滤。其中里面的两个方法如accept都是覆盖了父类的操作方法。accept返回一个布尔值,判断文件是否符合你的要求,符合返回真,否这返回假。这是一个回调函数,参数File f,就是被传进去的文件,然后再按你的逻辑进行过滤。这段代码过滤出文件夹,后缀名为png,jpg,gif的文件