TITLE:JFileChooserにファイルフィルタを追加

JFileChooserにファイルフィルタを追加

編集者:Terai Atsuhiro
作成日:2003-10-22
更新日:2021-06-06 (日) 17:31:59

概要

JFileChooserにファイルフィルタを追加します。

#screenshot

サンプルコード

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)";
  }
});
  • &jar;
  • &zip;

解説

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

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

fileChooser.addChoosableFileFilter(......
fileChooser.setFileFilter(fileChooser.getAcceptAllFileFilter()); 

コメント

  • "jpg" → ".jpg" -- MT
  • 直しておきました。どもです。 -- terai
  • addChoosableFileFilterを何度も呼ぶと最後に追加されたものがデフォルトになるが、例えば2番目に追加したfilterを最後に再び追加すると2番目がデフォルトになる。 -- Y
    • addChoosableFileFilter(FileFilter)は、それがすでに含まれている場合は、setFileFilter(FileFilter)だけ実行するみたいですね。 -- terai