「すべてのファイル」フィルタを使用するかどうかを設定する

広告

ダイアログを表示した時にファイルタイプに「すべてのファイル」がデフォルトで追加されています。この「すべてのファイル」を使用するかどうかを設定します。設定を行うにはJFileChooserクラスで用意されている「setAcceptAllFileFilterUsed」メソッドを使います。

AcceptAll FileFilter を選択可能フィルタのリストで有効な選択肢として使用
するかどうかを決定します。false の場合、AcceptAll ファイルフィルタは使
用可能なファイルフィルタのリストから削除されます。true の場合、AcceptAll
ファイルフィルタは実際に使用されるファイルフィルタになります。

引数には「すべてのファイル」フィルタを使用するかどうかを表すboolean型の値を設定します。「true」を設定すると「すべてのファイル」フィルタは使用されます。「false」を設定すると「すべてのファイル」フィルタは使用されません。

実際の使い方は次のようになります。

JFileChooser filechooser = new JFileChooser();
FileFilter filter = new FileNameExtensionFilter("HTMLファイル", "html", "htm");
filechooser.addChoosableFileFilter(filter);
filechooser.setAcceptAllFileFilterUsed(false);

int selected = filechooser.showOpenDialog(this);

サンプルプログラム

では簡単なサンプルを作成して試してみます。

JFileChooserTest14.java

import javax.swing.*;
import java.io.File;
import java.awt.BorderLayout;
import java.awt.event.*;
import javax.swing.filechooser.*;

public class JFileChooserTest14 extends JFrame implements ActionListener{

  JLabel label;

  public static void main(String[] args){
    JFileChooserTest14 frame = new JFileChooserTest14();

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBounds(10, 10, 300, 200);
    frame.setTitle("タイトル");
    frame.setVisible(true);
  }

  JFileChooserTest14(){
    JButton button = new JButton("file select");
    button.addActionListener(this);

    JPanel buttonPanel = new JPanel();
    buttonPanel.add(button);

    label = new JLabel();

    JPanel labelPanel = new JPanel();
    labelPanel.add(label);

    getContentPane().add(labelPanel, BorderLayout.CENTER);
    getContentPane().add(buttonPanel, BorderLayout.PAGE_END);
  }

  public void actionPerformed(ActionEvent e){
    JFileChooser filechooser = new JFileChooser("c:¥¥temp");
    FileFilter filter1 = 
      new FileNameExtensionFilter("HTMLファイル", "html", "htm");
    FileFilter filter2 = 
      new FileNameExtensionFilter("テキストファイル", "txt");
    filechooser.addChoosableFileFilter(filter1);
    filechooser.addChoosableFileFilter(filter2);
    filechooser.setAcceptAllFileFilterUsed(false);

    int selected = filechooser.showOpenDialog(this);
    if (selected == JFileChooser.APPROVE_OPTION){
      File file = filechooser.getSelectedFile();
      label.setText(file.getName());
    }
  }
}

上記をコンパイルした後で実行すると次のように表示されます。

JFileChooserで「すべてのファイル」フィルタを使用不可

ボタンをクリックするとフィルタが適用されたダイアログが表示されます。今回は「すべてのファイル」フィルタを表示されないように設定してあります。

JFileChooserで「すべてのファイル」フィルタを使用不可

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)