ファイル選択ダイアログ(showOpenDialog)の作成方法

ファイル選択ダイアログ(showOpenDialog)の作成方法

FileChooserクラスの以下のコンストラクタを使ってファイル選択ダイアログを作成することができます。

FileChooser()

ファイル選択ダイアログを表示するにはFileChooserクラスのshowOpenDialogメソッドを使います。

FileChooser.showOpenDialog()

具体的にはまずFileChooser のインスタンスを生成し、setTitleメソッドを使ってファイル選択ダイアログのタイトルを設定します。

        final FileChooser fc = new FileChooser();
        fc.setTitle("ファイル選択");

次にボタンのクリックイベントでshowOpenDialogメソッドを使ってダイアログを表示し、選択したファイルの絶対パスをshowOpenDialogメソッドの戻り値として受け取ります。showOpenDialogメソッドの引数はjavafx.stage.Stageになっているため、ここではprimaryStageを渡します。(nullでも問題ない)。また、ファイル選択ダイアログが閉じるまで後続の処理は実行されません。

        btn.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                File importFile = fc.showOpenDialog(primaryStage);

                if (importFile != null) {
                    label.setText(importFile.getPath().toString());
                }
            }
        });


ファイル選択ダイアログ作成サンプル

package mysample.directorychooser;

import java.io.File;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.DirectoryChooser;
import javafx.stage.Stage;

public class FileChooser01 extends Application {

    @Override
    public void start(final Stage primaryStage) {
        Button btn = new Button();
        btn.setText("ファイル選択");

        final DirectoryChooser fc = new DirectoryChooser();
        fc.setTitle("ファイル選択");

        final Label label = new Label();

        btn.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                File importFile = fc.showOpenDialog(primaryStage);

                if (importFile != null) {
                    label.setText(importFile.getPath().toString());
                }
            }
        });

        VBox vbox = new VBox();
        vbox.getChildren().addAll(btn, label);

        StackPane root = new StackPane();
        root.getChildren().addAll(vbox);

        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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


このサンプルを実行すると以下のように表示されます。


画面に表示されているボタンをクリックすると以下のようなファイル選択ダイアログが表示されます。(MACの場合)。


ファイルを選択すると選択したファイルのパスが表示されます。