S-JIS[2007-02-02/2009-09-19] 変更履歴

JFileChooser(Swing)

JFileChooserは、ファイルを選択するダイアログ。

(ファイル選択でなく、) ドロップされたファイルを処理したい場合は、DropTargetクラスを使用。


HTMLファイルを読み込む為に選択するダイアログは、以下の通り。

import java.io.File;
import javax.swing.JFileChooser;
	public void openFile() {
		JFileChooser fc = new JFileChooser();
		fc.setDialogTitle("HTMLファイルを開く");
		// fc.setDialogType(JFileChooser.OPEN_DIALOG);
		fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
		fc.setMultiSelectionEnabled(true);

		fc.setFileFilter(new FileFilter() {	//無名内部クラス使用
			public boolean accept(File f) {
				if (f.isDirectory()) return true; //ディレクトリは表示

				//拡張子がhtml,htmのものだけ表示
				String name = f.getName();
				int n = name.lastIndexOf('.');
				if (n > 0) {
					String ext = name.substring(n);
					return ext.equalsIgnoreCase(".html")
					    || ext.equalsIgnoreCase(".htm");
				}
				return false;
			}

			public String getDescription() {
				return "HTMLファイル(*.html, *.htm)";
			}
		});

		int selected = fc.showOpenDialog(null);
		if (selected == JFileChooser.APPROVE_OPTION) {
			File[] fs = fc.getSelectedFiles();
			for (int i = 0; i < fs.length; i++) {
				File f = fs[i];
				// fを使ってファイルを読み込む処理を実装する
			}
		}
	}

この例では毎回JFileChooserのインスタンスを作り直しているが、作るのは一度だけにして、同じインスタンスに対してshowOpenDialog()のみを実行するようにすれば、以前開いた場所が保持されている。[2007-02-03]


JFileChooserのメソッド

メソッド 概要 備考 更新日
setDialogTitle ダイアログのタイトルを設定      
setDialogType 何の為のダイアログかを指定
showOpenDialog()showSaveDialog()を使う場合は不要)
OPEN_DIALOG 開く為のダイアログ  
SAVE_DIALOG 保存する為のダイアログ  
CUSTOM_DIALOG 独自のダイアログ 2007-02-03
setFileSelectionMode 選択可能な種類を指定 FILES_ONLY ファイルのみ選択可能  
DIRECTORIES_ONLY ディレクトリのみ選択可能  
FILES_AND_DIRECTORIES ファイルもディレクトリも選択可能  
setMultiSelectionEnabled 複数選択可能かどうかを指定      
setCurrentDirectory デフォルトのディレクトリを指定   ファイルを指定しても、そのディレクトリになる。 2007-02-03
setSelectedFile デフォルトのファイル(単一)を指定   このメソッドを使う場合、setCurrentDirectory()は不要 2007-02-03
setSelectedFiles デフォルトのファイル(複数)を指定     2007-02-03
setFileFilter ダイアログに表示するファイルを絞る為のフィルターを指定   フィルターは、FileFilterクラスを継承して自分で実装する 。
JDK1.6では、単純な拡張子指定用のクラスが用意された。
2009-09-19
setAcceptAllFileFilterUsed 「全ファイル」のフィルターを表示するかどうかを指定     2007-02-03
showOpenDialog 読込用ダイアログを表示し、結果を取得
(内部でsetDialogType()使用)
APPROVE_OPTION ファイルが選択された 2007-02-03
CANCEL_OPTION ダイアログがキャンセルされた
showSaveDialog 保存用ダイアログを表示し、結果を取得
(内部でsetDialogType()使用)
APPROVE_OPTION ファイルが選択された 2007-02-03
CANCEL_OPTION ダイアログがキャンセルされた
getSelectedFiles 選択されたファイル名(複数)を取得      
getSelectedFile 選択されたファイル名(単一)を取得      

FileNameExtensionFilter

JDK1.6から、拡張子を指定する場合のFileFilterが用意されたらしい。[2009-09-19]

import javax.swing.filechooser.FileNameExtensionFilter;
	fc.setFileFilter(new FileNameExtensionFilter("HTMLファイル(*.html, *.htm)", "html", "htm"));

コンストラクターの第1引数はdescription(説明)、第2引数以降は可変引数で、拡張子を列挙する。


Swing目次へ戻る / Java目次へ戻る / 新機能へ戻る
メールの送信先:ひしだま