選択モードを設定する

広告

デフォルトの設定ではダイアログで選択できるのはファイルのみです。ディレクトリだけを選択できるようにしたり、ディレクトリとファイルの両方を選択できるように設定する方法を確認します。選択モードを設定するにはJFileChooserクラスで用意されている「setFileSelectionMode」メソッドを使います。

public void setFileSelectionMode(int mode)

JFileChooserを設定して、ユーザーが、ファイルのみ、ディレクトリのみ、ま
たはファイルとディレクトリの両方を選択できるようにします。.デフォルト
は JFilesChooser.FILES_ONLY です。

パラメータ:
  mode - 表示されるファイルの種類
    JFileChooser.FILES_ONLY
    JFileChooser.DIRECTORIES_ONLY
    JFileChooser.FILES_AND_DIRECTORIES
例外:
  IllegalArgumentException - ファイル選択モードの mode が無効な場合

引数にダイアログの選択モードを表す値をint型の値として設定します。設定可能な値は次の通りです。

選択可能なファイル種類
JFileChooser.FILES_ONLYファイルのみ
JFileChooser.DIRECTORIES_ONLYディレクトリのみ
JFileChooser.FILES_AND_DIRECTORIESファイルとディレクトリの両方

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

JFileChooser filechooser = new JFileChooser();
filechooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

int selected = filechooser.showSaveDialog(this);

なお「JFileChooser.DIRECTORIES_ONLY」を指定した場合にはダイアログにはディレクトリしか表示されなくなります。「JFileChooser.FILES_ONLY」及び「JFileChooser.FILES_AND_DIRECTORIES」を指定した場合にはディレクトリとファイルの両方が表示されます。

サンプルプログラム

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

JFileChooserTest9.java

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

public class JFileChooserTest9 extends JFrame implements ActionListener{

  JLabel label;

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

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

  JFileChooserTest9(){
    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");
    filechooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

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

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

JFileChooserで選択モードを設定する

ボタンをクリックするとダイアログが表示されます。今回はディレクトリのみ選択可能としましたのでダイアログにはディレクトリだけが表示されます。

JFileChooserで選択モードを設定する

ディレクトリのみ選択可能とした場合は、ファイル名の箇所にデフォルトで最初に開いたディレクトリ名が表示されています。

それではディレクトリ名をクリックしてから「保存」ボタンをクリックして下さい。

JFileChooserで選択モードを設定する

JFileChooserで選択モードを設定する

今回は取得したFileクラスのオブジェクトからディレクトリ名を取得する時にパス付きで取得しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。