非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

JavaFXでファイルダイアログ(FileChooser)

   

JavaFXでファイルダイアログを利用する方法です。FileChooserクラスを使います。

[ad#top-1]

FileChooserの使い方

FileChooserの使い方を順を追って説明します。

まず最初にFileChooser のインスタンスを生成します。

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

 

拡張子の指定は以下のようにします。

fc.getExtensionFilters().addAll(
  new FileChooser.ExtensionFilter("イメージファイル", "*.jpg", "*.png"),
  new FileChooser.ExtensionFilter("すべてのファイル", "*.*")
);
 

 

初期フォルダをホームフォルダにする場合はこちら。他のフォルダの指定もFileクラスを使って指定可能です。

fc.setInitialDirectory(new File(System.getProperty("user.home")));
 

 

ファイルダイアログを表示します。返り値はFile形式になります。

// オープンダイアログ
File file = fc.showOpenDialog(null);
// セーブダイアログ
File file = fc.showSaveDialog(null);
 

 

返り値はファイルパスなのでnullじゃない時に処理を行います。

if(file != null) {
  System.out.println(file.getPath());
}
 

 

ソースコード全文

下の図のようにボタン2つを使ってファイルダイアログとフォルダダイアログを開くプログラムのソースコード例です。

 

以下がソースコード全文です。コピペしてコンパイルすると実行できます。フォルダダイアログの使い方はファイルダイアログとほぼ同じです。

import javafx.application.Application;
import javafx.fxml.*;
import javafx.scene.*;
import javafx.stage.*;
import javafx.scene.layout.*;
import javafx.event.ActionEvent;
import java.io.*;

public class FileChooserTest extends Application {

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

  @Override
  public void start(Stage stage) throws Exception{
    VBox root = FXMLLoader.load(getClass().getResource("TestDialog.fxml"));
    stage.setTitle("TableView Test");
    stage.setScene(new Scene(root));
    stage.show();
  }

  @FXML
  public void fileOpenAction(ActionEvent e) {
    FileChooser fc = new FileChooser();
    fc.setTitle("ファイル選択");
    fc.getExtensionFilters().addAll(
      new FileChooser.ExtensionFilter("イメージファイル", "*.jpg", "*.png"),
      new FileChooser.ExtensionFilter("すべてのファイル", "*.*")
    );
    // 初期フォルダをホームに
    fc.setInitialDirectory(new File(System.getProperty("user.home")));
    // ファイルダイアログ表示
    //File file = fc.showSaveDialog(null);
    File file = fc.showOpenDialog(null);
    if(file != null) {
      System.out.println(file.getPath());
    }
  }

  @FXML
  public void folderOpenAction(ActionEvent e) {
    DirectoryChooser fc = new DirectoryChooser();
    fc.setTitle("フォルダ選択");
    // 初期フォルダをホームに
    fc.setInitialDirectory(new File(System.getProperty("user.home")));
    File file = fc.showDialog(null);
    if (file != null) {
      System.out.println(file.getPath());
    }
  }
}
 

 

[ad#ad-1]

スポンサーリンク

 - Java