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