JFileChooserで選択できるファイルにフィルターをかけることができるそうです。javax.swing.filechooser.FileFilterから継承したクラスを作っておいて、それをaddChoosableFileFilterメソッドに引き渡せばよいそうです。 FileFilterの実装は自分でしないといけないのですが、大抵の場合は拡張子で判定したいだけなので

new FileFilterExt(String ext[], String desc)

みたいな感じなものを作っておくと便利だと思います。 あと、配列を確保してすぐ引数に渡す時、foo(new String[]{"one", "two"});みたいに書けるのを試行錯誤して発見しました・・・。(真面目にマニュアルを読んでないので知らなかった)

import java.io.File;
import java.lang.*;
import java.util.*;

public class FileFilterExt extends javax.swing.filechooser.FileFilter{
   private final String _desc;
   private final String[] _ext;
   
   public FileFilterExt(String[] extension, String description) {
       HashSet extset = new HashSet();
       for(int i=0; i<extension.length; i++){
           extset.add(extension[i].toLowerCase());
       }
       
       _ext = (String[])extset.toArray(new String[0]);
       _desc = description;
       
   }
   
   
   public boolean accept(java.io.File f) {
       if(f.isDirectory()){ return true; }
       
       String extension = getExtension(f);
       for(int i=0; i<_ext.length; i++){
           if( _ext[i].equals(extension) ){ return true; }
       }
       return false;
   }
   
   
   public String getDescription() {
       return _desc;
   }
   
   
   private String getExtension( File file ) {
       if(file == null) return null;
       String filename = file.getName();
       int i = filename.lastIndexOf('.');
       try {
           return filename.substring(i+1).toLowerCase();
       } catch(Exception e) {
           return null;
       }
   }
}

CategoryJava


|New|Edit|Freeze|Diff|History|Attach|Copy|Rename|
Last-modified: 2004-07-28 (Wed) 00:00:00
HTML convert time: 0.005 sec.