S-JIS[2012-04-12] 変更履歴

FileChooser(JavaFX2)

FileChooserは、JavaFX2でファイルを選択するダイアログ。
ディレクトリーを選択したい場合はDirectoryChooserを使う(JavaFX2.1以降)。


テキストファイルを全て読み込んで内容を表示する例

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;

import javafx.application.Application;
import javafx.application.Platform;
import javafx.stage.FileChooser;
import javafx.stage.FileChooser.ExtensionFilter;
import javafx.stage.Stage;
public class SampleFileChooser extends Application {

	public static void main(String[] args) {
		launch(args);
	}

	@Override
	public void start(Stage primaryStage) throws Exception {
		FileChooser fc = new FileChooser();
		fc.setTitle("select file");
		fc.setInitialDirectory(new File(System.getProperty("user.home")));
		fc.getExtensionFilters().add(new ExtensionFilter("HTML", "*.html", "*.htm"));

		File f = fc.showOpenDialog(primaryStage);
		// System.out.println(f);

		if (f != null) {
			Path path = f.toPath();
			for (String s : Files.readAllLines(path, Charset.forName("UTF-8"))) {
				System.out.println(s);
			}
		}

		Platform.exit();
	}
}

FileChooserのインスタンスを作ったら、showOpenDialog()でファイル選択ダイアログが開く。
SwingのJFileChooserだとSwingで頑張って作った感じのウィンドウになるが、JavaFXの場合はOSのダイアログをそのまま使っているように思われる。

showOpenDialog()にはオーナーウィンドウを指定する必要があるが、nullでも良い。
とりあえず、Application#start()で渡されるウィンドウ(StageはWindowを継承している)を指定する。
(Applicationを経由せずにオーナーウィンドウをnullにして使用することは出来ないようなので、注意)

showOpenDialog()ではファイルを1つだけ選択できる。選択されなかった場合はnullが返るので、nullチェックは必須。
(ファイル読み込みにはJDK1.7で導入されたNIO2(Path・Files)を使ってみた。readAllLines()はテキストファイルを全部読んでListに入れるものなので、大きなファイルで使う場合には注意)

今回の例だと、終了する際はPlatform.exit()を呼ぶ必要がある。
primaryStageを何も表示していないので、そのままstart()が終わってもJavaFXアプリとしては終了しない。
そこでPlatform.exit()を呼んでおくと、start()を抜けた後にアプリケーション全体が終了する。
(System.exit()と異なり、Platform.exit()を呼び出した途端に終了するわけではない)


FileChooserのメソッド

メソッド 概要
setTitle ダイアログのタイトルを設定する。
setInitialDirectory 初期ディレクトリーを設定する。
getExtensionFilters 拡張子フィルターのリストを取得する。
showOpenDialog 読み込み用にファイルを1つ選択する為のダイアログを開く。
選択されたファイルを示すFileが返る。
ファイルが選択されなかった場合はnullが返る。
showOpenMultipleDialog 読み込み用に複数のファイルを選択する為のダイアログを開く。
選択されたファイルのリスト(List<File>)が返る。
ファイルが選択されなかった場合はnullが返る。
showSaveDialog 書き込み用にファイルを1つ選択する為のダイアログを開く。
選択されたファイルを示すFileが返る。
ファイルが選択されなかった場合はnullが返る。

DirectoryChooserのメソッド

メソッド 概要
setTitle ダイアログのタイトルを設定する。
setInitialDirectory 初期ディレクトリーを設定する。
showDialog ディレクトリーを選択する為のダイアログを開く。
選択されたディレクトリーを示すFileが返る。
ディレクトリーが選択されなかった場合はnullが返る。

JavaFX目次へ戻る / Java目次へ戻る
メールの送信先:ひしだま