プロジェクト

全般

プロフィール

JavaFXとパラメータの取得

はじめに

JavaFXプログラムは、コマンドラインから実行する形式、ブラウザ内で実行する形式、Java Web StartとしてWebダウンロードして実行する形式があります。

プログラムを実行するときに、コマンドラインから実行する場合はコマンドラインオプションとして、ブラウザ内で実行する形式ではHTMLのパラメータ定義として、Java Web Startとして実行する形式としてJNLPのパラメータ定義としてプログラムにオプションを指定することができます。

JavaFXプログラムとしては、どの形式で実行されても共通のAPIでパラメータを取得することが可能となっています。

パラーメータAPI

参照情報

javafx.application.Application.Parameters

JavaFXでパラメータを取得するAPIとして、ApplicationクラスのネストクラスParametersが提供されています。
主要APIは次の3つです。

Map<String, String> getNamed();
List<String> getRaw();
List<String> getUnnamed();

getNamed

名前と値のペアで指定したパラメータが取得できます。

getRaw

すべてのパラメータが取得できます。

getUnnamed

すべてのパラメータから、名前と値のペアで指定したパラメータを除いたものが取得できます。

コマンドラインオプションで指定したパラメータ

実験1

public class MyApplication extends Application {

    @Override
    public void start(Stage primaryStage) {
        printParameters();
        :
    }

    private void printParameters() {
        Parameters params = getParameters();
        params.getRaw().forEach(System.out::println);
        params.getUnnamed().foreEach(System.out::println);
        params.getNamed().forEach((k, v) -> System.out.printf("%s : %s%n", k, v));
    }
}

このプログラムに対して、いくつかオプションを指定してみます。

 java -jar MyApplication.jar aaa -bbb --ccc ddd=delta -eee=echo --fff=foxtrot

結果は、
  • getRaw()
    aaa
    -bbb
    --ccc
    ddd=delta
    -eee=echo
    --fff=foxtrot
    
  • getUnnamed()
    aaa
    -bbb
    --ccc
    ddd=delta
    -eee=echo
    
  • getNamed()
    fff : foxtrot
    

となりました。つまり、コマンドラインオプションで指定する場合は、名前付きパラメータ(キーと値のペア)となるのは、オプションに'--'で始まる名前と'='で値を続けて記載した場合だけです。

--名前=値

クリップボードから画像を追加 (サイズの上限: 1 GB)