選択モードを設定する
デフォルトの設定ではダイアログで選択できるのはファイルのみです。ディレクトリだけを選択できるようにしたり、ディレクトリとファイルの両方を選択できるように設定する方法を確認します。選択モードを設定するには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」を指定した場合にはディレクトリとファイルの両方が表示されます。
サンプルプログラム
では簡単なサンプルを作成して試してみます。
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()); } } }
上記をコンパイルした後で実行すると次のように表示されます。
ボタンをクリックするとダイアログが表示されます。今回はディレクトリのみ選択可能としましたのでダイアログにはディレクトリだけが表示されます。
ディレクトリのみ選択可能とした場合は、ファイル名の箇所にデフォルトで最初に開いたディレクトリ名が表示されています。
それではディレクトリ名をクリックしてから「保存」ボタンをクリックして下さい。
今回は取得したFileクラスのオブジェクトからディレクトリ名を取得する時にパス付きで取得しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。