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]
スポンサーリンク