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]]
HTML convert time: 0.002 sec.