忍者ブログ

軽Lab

 Javaを中心とした、プログラミング関係のナレッジベース

Home > JavaFX入門 > JavaFX Stageパッケージ

JavaFX Stageパッケージ

『JavaFXの基本構造』では、JavaFXがStage, Scene, SceneGraphの3つのクラスで構成されていることを確認した。本記事では、Stageパッケージに属するクラスを見ていく。Sceneパッケージ、SceneGraphパッケージについては別記事で扱う。


■ Stageパッケージに属するクラス

JavaDocを見る限り、Stageパッケージに属するクラスは意外と少ない模様。(参照2)
以下に主要なクラスの一覧を示す。

クラス名 内容
Stage ウィンドウを表すクラス。複数ウィンドウやモーダル・ウィンドウ、全画面表示にも対応
Popup ポップアップ・ウィンドウを表すクラス。親ウィンドウが必要。
Screen ディスプレイを表すクラス。
FileChooser ファイル選択ダイアログ。ダイアログ呼出は同期メソッド
DirectoryChooser ディレクトリ選択ダイアログ。ダイアログ呼出は同期メソッド


以下、Stageクラスの使い方サンプル。
package application_fx;

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

import javafx.application.Application;
import javafx.geometry.Rectangle2D;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.paint.Color;
import javafx.stage.DirectoryChooser;
import javafx.stage.FileChooser;
import javafx.stage.FileChooser.ExtensionFilter;
import javafx.stage.Screen;
import javafx.stage.Stage;

public class TestStage extends Application {

    @Override
    public void start(Stage mainStage) throws Exception
    {
        // 一時変数の宣言
        List<String>    output                  = new ArrayList<String>();  // 画面出力用バッファ
        Rectangle2D     primaryScreenBounds     = null;                     // ディスプレイサイズ
        File            f                       = null;                     // 選択したファイルorディレクトリ情報
        String          str                     = null;                     // 一時変数
        
        // ファイル選択ダイアログを表示し、選択したファイルパスを取得
        FileChooser fc = new FileChooser();
        fc.setTitle( "ファイル選択ダイアログ" );
        fc.getExtensionFilters().addAll( new ExtensionFilter( "All Files", "*.*" ),
                                         new ExtensionFilter( "Text Files", "*.txt" ),
                                         new ExtensionFilter( "Image Files", "*.png", "*.jpg", "*.gif" ),
                                         new ExtensionFilter( "Audio Files", "*.wav", "*.mp3", "*.aac" )
                                        );
        f   = fc.showOpenDialog(mainStage);
        str = ( f == null )? "選択なし" : f.toURI().toString() ;
        output.add( "選択したファイル名 : " + str );
 
        
        // ディレクトリ選択ダイアログを表示し、選択したファイルパスを取得
        DirectoryChooser dc = new DirectoryChooser();
        dc.setTitle("ディレクトリ選択ダイアログ");
        f   = dc.showDialog(mainStage);
        str = ( f == null )? "選択なし" : f.toURI().toString();
        output.add( "選択したディレクトリ : " + str );

        
        // ディスプレイサイズを取得
        primaryScreenBounds = Screen.getPrimary().getVisualBounds();
        output.add( "ディスプレイサイズ:" + primaryScreenBounds.getWidth() + "x" + primaryScreenBounds.getHeight() + "(px)" );
        output.add( "ディスプレイ解像度:" + Screen.getPrimary().getDpi() + "dpi" );
        
        
        // シーングラフを作成
        Group root      = new Group();
        root.getChildren().add( new Label( String.join( "\n" , output ) ) );
        
        // シーンを作成
        Scene scene     = new Scene( root,
                                     primaryScreenBounds.getWidth(),
                                     primaryScreenBounds.getHeight(),
                                     Color.WHITE );
        
        // シーンをステージに追加
        mainStage.setScene( scene );
        
        // ウィンドウを表示
        mainStage.show();
        
        // 全画面表示
        mainStage.setFullScreen(true);
        
    }
    
    
    public static void main(String[] args)
    {
        launch(args);
    }

}
実行結果

以下、ソースコードの解説。

  1. (22行目) start関数の引数として渡されるStage型のインスタンスが渡されているが、これはlauch関数実行により自動生成されたもの。このため、複数のウィンドウを利用したい場合を除き、プログラマがStage型のインスタンスを作成する必要はない。
  2. (30行目~40行目) ファイル選択ダイアログを利用する例。ExtensionFilterクラスでダイアログに表示するファイルの拡張子を制限できる。showOpenDialog関数はダイアログを開き、処理が終わるまで待つ同期メソッドになっている。ファイルが選ばれなかった場合はnullがかえる。
  3. (43行目~48行目) ディレクトリ選択ダイアログを利用する例。ファイル選択ダイアログとほぼ同じ。
  4. (51行目~55行目) ディスプレイ情報を取得する例。
  5. (56行目~72行目) 出力文字をラベルに貼り付け、ウィンドウ表示。
  6. (75行目) 全画面表示を有効に変更


■ 参照

  1. Java Platform, Standard Edition (Java SE) 8 - チュートリアル(日本語)
  2. JavaDoc - パッケージjavafx.stageの階層
  3. JavaDoc - クラスStage

※Oracleのドキュメントについての注意。
 英語版ページの場合、以下のようにURLを変更すると同内容の日本語版ページが存在する場合がある。日本語版ページのリンク先が英語版ページのままになっている場合もあるため、英語版ページに飛んだ場合には一度試してみるとよい。

 英語版ページ 『http://docs.oracle.com/javase/8/~』
 日本語版ページ『http://docs.oracle.com/javase/jp/8/~』
Home > JavaFX入門 > JavaFX Stageパッケージ

- ランダム記事 -
- PR -

コメント

プロフィール

管理者:
 連絡はContactよりお願いします。

PR