ともさんのHP >プロブラミング >JavaFX >ファイル選択ダイアログ

【JavaFX】ファイル選択ダイアログ

ファイルの読み込みや保存、ディレクトリの選択などをするときに開くダイアログの説明です。

広告


種類と用途

単一のファイルを選択、複数のファイルを選択、ファイルの保存、ディレクトリの選択、の種類があります。
小さくてわかりにくいですが、下の動画は4種類を順番に表示させています。
JavaFXFileChooser動画


ソースファイルは以下の通り。

package tomojavalib.fx;


import java.io.File;
import java.util.List;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.*;
import javafx.stage.DirectoryChooser;
import javafx.stage.FileChooser;
import javafx.stage.Stage;

public class ChooserTest extends Application {

 public static void main(String[] args) {
  Application.launch(args);
 }
 
 @Override
 public void start(Stage stage){
  //StageにPaneとSceneを置く
  Vbox pane = new Vbox();

 //単一ファイルを選択
 FileChooser fileChooser = new FileChooser();
 fileChooser.setTitle( "ファイル選択" );
 fileChooser.setInitialDirectory( new File("c:/test/") );
 File f1 = fileChooser.showOpenDialog( stage );
 
 //複数ファイルを選択
 FileChooser fileChooser2 = new FileChooser();
 fileChooser2.setTitle( "複数ファイル選択" );
 fileChooser2.setInitialDirectory( new File("c:/test/") );
 List<File> f2= fileChooser2.showOpenMultipleDialog( stage ); 
 
  //ファイルを保存
 FileChooser fileChooser3 = new FileChooser();
 fileChooser3.setTitle( "ファイル保存" );
 fileChooser3.setInitialDirectory( new File("c:/test/") );
 fileChooser3.setInitialFileName("save.txt");
 File f3= fileChooser3.showSaveDialog( stage ); 
 
 //ディレクトリを選択
 DirectoryChooser directoryChooser = new DirectoryChooser();
 directoryChooser.setTitle( "ディレクトリ選択" );
 directoryChooser.setInitialDirectory( new File("c:/test/") );
 File f4 = directoryChooser.showDialog( stage );

 Scene scene = new Scene(pane, 320, 240);
 stage.setScene(scene);
 stage.show();
 }
 
}

単一のファイル選択、複数のファイル選択、ファイル保存の場合は、FileChooserを使い、それぞれ
 単一ファイル読み込み : fileChooser.showOpenDialog( stage );
 複数ファイル読み込み : fileChooser2.showOpenMultipleDialog( stage );
 ファイル保存     : fileChooser3.showSaveDialog( stage );
で表示します。
ディレクトリの選択は、DirectoryChooserを使い、directoryChooser.showDialog( stage );で表示させます。

プログラムはダイアログを表示した行で止まり、ダイアログを閉じた段階で再開されます。
ダイアログはFileやListを返すので、読み込みは保存は受け取ったFile、Listを利用して行います。
上のサンプルプログラムはStageを開いていきなりダイアログを表示させていますが、通常はボタンを押すなどのイベントで開くことになります。

広告


設定

初期ディレクトリを設定する

 fileChooser.setInitialDirectory( new File("./") );

で初期表示するディレクトリを設定します。
"c:/"とすればCドライブ
"./"は実行しているディレクトリ
"../"は実行ディレクトリの一つ上の階層
"user.home"はホームディレクトリ

選択するファイルの種類を指定する

 fileChooser.getExtensionFilters().add( new FileChooser.ExtensionFilter( "テキストファイル", "*.txt" ) );

で選択できるファイルを制限することができます。
下の図のようにダイアログに反映されます。
JavaFXファイルフィルター


テキストファイルを読み込むサンプルプログラム

ボタン楽天 を押すとファイル読み込みダイアログを表示し、選択したテキストファイルの最初の行を表示するサンプルプログラムです。
テキストファイルを読み込むサンプルプログラム

package tomojavalib.fx;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.*;
import javafx.scene.text.Text;
import javafx.stage.FileChooser;
import javafx.stage.Stage;

public class FileChooserTest extends Application {
Stage stage;
TextField t;
Text text ;

 public static void main(String[] args) {
  Application.launch(args);
 }
 
 @Override
 public void start(Stage stage){
  this.stage = stage;
  //StageにPaneとSceneを置く
  Vbox pane = new Vbox();
  Label l1 = new Label( " ボタン " );
  pane.getChildren().add( l1 );
  Button b = new Button( " ボタン " );
  pane.getChildren().add( b );
//マウスがクリックされたとき
 EventHandler<MouseEvent> mouseClick = ( event ) -> this.mouseClick( event );
 b.addEventHandler( MouseEvent.MOUSE_CLICKED , mouseClick );

  Label l2 = new Label( " ファイル名 " );
  pane.getChildren().add( l2 );
  t = new TextField( "ファイルを指定" );
  pane.getChildren().add( t );
  
  Label l3 = new Label( " ファイルの中身 " );
  pane.getChildren().add( l3 );  
  text = new Text("");
  pane.getChildren().add( text );
  
  Scene scene = new Scene(pane, 320, 240);
  stage.setScene(scene);
  stage.show();
 }
 
private void mouseClick( MouseEvent e ){
FileChooser fileChooser = new FileChooser();
 fileChooser.setTitle( "ファイル選択" );
 fileChooser.setInitialDirectory( new File("../") );
 //fileChooser.setInitialDirectory(new File(System.getProperty("user.home")));
 fileChooser.getExtensionFilters().add( new FileChooser.ExtensionFilter( "テキストファイル", "*.txt" ) );
 File file = fileChooser.showOpenDialog( this.stage );
 if (file != null) {
  String filename = file.getPath().toString();
  this.t.setText( filename );
  try{
   BufferedReader br = new BufferedReader(new FileReader(file));
   String str = br.readLine();
   text.setText( str );
  }catch(Exception ex){}
 }

 
}

最終更新日: 2017-05-18 10:15:26

ともさんのHP >プロブラミング >JavaFX >ファイル選択ダイアログ

広告
新着ページ

AIを利用し、衣服のデザイン画から型紙を制作する方法  
2つのアパレル3D技術でひらくオーダーメイド生産の手法  
【洋裁型紙】前後身頃の肩の傾きは何故前身頃の方が傾いているのか  
電子追尾式天体写真撮影法  
日本ミツバチ巣箱の種類  
ドラフター(製図台)でソーイング  
日本ミツバチが逃亡  
カメさんの箱庭  
天体用デジタルカメラの構造と天体写真  
Javaで静止画像(Jpeg)を動画(Mov)に変換  
USBカメラをJAVAで制御  

他のサイト

3D-CAD
洋裁CAD

いいねなど

 RSS 

Author: Tomoyuki Ito

このサイトの文章・写真の無断転載を禁じます