ファイル出力ダイアログ(FileChooser)の作成方法

ファイル出力ダイアログ(FileChooser)の作成方法

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

FileChooser()

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

FileChooser.showSaveDialog()

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

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

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

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

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


ファイル出力ダイアログ作成サンプル

package mysample.filechooser;

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.FileChooser;
import javafx.stage.Stage;

public class FileChooser02 extends Application {

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

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

        final Label label = new Label();

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

                if (saveFile != null) {
                    label.setText(saveFile.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の場合)。

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