TITLE:JFileChooserにファイルフィルタを追加
#navi(../)
*JFileChooserにファイルフィルタを追加 [#ja5c24a0]
>編集者:[[Terai Atsuhiro>terai]]~
作成日:2003-10-22~
更新日:&lastmod;

#contents

**概要 [#dc15e0b1]
JFileChooserにファイルフィルタを追加します。

#screenshot

**サンプルコード [#v2620577]
 JFileChooser fileChooser = new JFileChooser();
 fileChooser.addChoosableFileFilter(new FileFilter() {
   public boolean accept(File file) {
     if(file.isDirectory()) return true;
     if(file.getName().toLowerCase().endsWith(".jpg")) return true;
     return false;
   }
   public String getDescription() {
     return "JPEGファイル(*.jpg)";
   }
 });

//-&jnlp;
-&jar;
-&zip;

**解説 [#id38fa2f]
上記のサンプルでは、フィルタを匿名インナークラスで書いていますが、複数のフィルタを追加する場合は、それぞれクラスを作ったほうがすっきり書けるかもしれません。

addChoosableFileFilter(FileFilter)メソッドを使うと、そのフィルタが現在選択されているフィルタになります。例えば「すべてのファイル」をデフォルト(選択された状態)に戻したい場合は、以下のようにします。
 fileChooser.addChoosableFileFilter(......
 fileChooser.setFileFilter(fileChooser.getAcceptAllFileFilter()); 

**コメント [#o0017e45]
-"jpg" → ".jpg" -- [[MT]] SIZE(10){&new{2003-12-24 (水) 12:15:54};}
-直しておきました。どもです。 -- [[terai]] SIZE(10){&new{2003-12-24 (水) 12:41:13};}
- addChoosableFileFilterを何度も呼ぶと最後に追加されたものがデフォルトになるが、例えば2番目に追加したfilterを最後に再び追加すると2番目がデフォルトになる。 -- [[Y]] &new{2006-11-27 (月) 15:21:26};
-- addChoosableFileFilter(FileFilter)は、それがすでに含まれている場合は、setFileFilter(FileFilter)だけ実行するみたいですね。 -- [[terai]] &new{2006-11-28 (火) 16:44:40};
#comment