2016-07-21 5 views
0

アプリケーションjavafxのstartメソッドで引数を渡す方法は? は実際に、私はラインで他のクラスの私のJavaFXアプリケーションを呼び出す:引数の開始メソッドを追加するJavaFX

mainController.getMainApp().launch(MainApp.class); 

そして、私の開始方法以下:

@Override 
public void start(Stage primaryStage) { 
    this.primaryStage = primaryStage; 
    this.primaryStage.setTitle("CLS"); 
    this.primaryStage.initStyle(StageStyle.UNDECORATED); 
    // here the page fxml to load 

問題は、私が何であるか後かわからないということですページfxml私は私の開始メソッドで読み込みます。それは私の別のクラスにあります。 私はfxmlページをロードする方法を知りたいので、メソッドの引数を渡したいと思います。

お願いします。

ありがとうございました。

+0

JavaFXアプリケーションのライフサイクルを誤解していると思います。 'Application'クラスはアプリケーション全体を表しており、' start() 'メソッドが呼び出されて開始されます。本質的に' main() 'の代わりに' start() 'と考えてください。したがって、 'start()'が呼び出されたときに利用可能な唯一のデータは、コマンドラインからアプリケーションに渡されるコマンドラインパラメータです。 'start()'メソッドに渡されたステージ以外に、その時点で他のアクセス可能なオブジェクトがメモリに存在してはいけません。 –

答えて

1

Applicationの各launch方法は、可変引数の引数を受け入れるように設計されています:initにしたり、これらを得ることができますstart方法に続いて

launch(MainApp.class, "--FXMLFile=Sample.fxml", "UnnamedArgument"); 

public static void launch(Class<? extends Application> appClass, String... args) 

したがって、あなたのような引数を渡すことができますgetParametersメソッドを使用した引数:

Parameters parameters = getParameters(); 
List<String> unnamed = parameters.getUnnamed(); 
Map<String, String> named = parameters.getNamed(); 
List<String> raw = parameters.getRaw(); 

名前付きまたは名前の付いていないパラメータを使用できます(この例では、最初の名前は名前が付けられていません)。メソッドgetNamedは、Mapの名前付きパラメータを返します。メソッドgetUnnamedは、Listの名前のないパラメータを返します。メソッドgetRawは、名前付きの名前のないパラメータを生のlistとして返します。 getParameters()のjavadocのから

注:

注:それはnullを返しますように、この方法は、アプリケーション コンストラクタから呼び出されるべきではありません。これは、init() メソッドで呼び出すことができます。

+0

Okeyありがとう、しかし、私は起動メソッドを記述する場合、私は、メソッドの開始でinitですprimaryStageにアクセスしていない? – Benj

+0

申し訳ありませんが、私はその質問を理解していません。 – DVarga

+0

@Benj 'launch(...)'メソッドは記述しません。それはすでにあなたのために書かれています。 JREがJavaFXアプリケーション自体の起動方法を知らない場合は、 'main(...) 'から呼び出すだけです。間違った場所でアプリケーションを起動しようとしているようです。 –

関連する問題