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

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

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

FileChooser()

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

FileChooser.showOpenMultipleDialog()

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

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

次にボタンのクリックイベントでshowOpenMultipleDialogメソッドを使ってダイアログを表示し、選択した複数のファイルの絶対パスをshowOpenDialogメソッドの戻り値として受け取ります。戻り値はList<java.io.File>で返されます。

showOpenMultipleDialogメソッドの引数はjavafx.stage.Stageになっているため、ここではprimaryStageを渡します。(nullでも問題ない)。また、ファイル選択ダイアログが閉じるまで後続の処理は実行されません。

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

                if (importFiles != null) {

                    for (File file : importFiles) {
                        Label label = new Label(file.getPath());
                        vbox.getChildren().add(label);
                    }
                }
            }
        });


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

package mysample.filechooser;

import java.io.File;
import java.util.List;
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 FileChooser03 extends Application {

    @Override
    public void start(final Stage primaryStage) {
        final VBox vbox = new VBox();

        Button btn = new Button();
        btn.setText("ファイル選択");

        vbox.getChildren().addAll(btn);

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

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

                if (importFiles != null) {

                    for (File file : importFiles) {
                        Label label = new Label(file.getPath());
                        vbox.getChildren().add(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の場合)。

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