添加参数start方法JavaFX

时间:2016-07-21 09:11:55

标签: java javafx arguments

如何在应用程序javafx的start方法中传递参数? 实际上,我通过以下行在另一个类中调用我的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

问题是我不知道在我的start方法中加载的页面fxml是什么。我知道的是另一个班上的人。 所以我想在我的方法中传递参数,开始知道我将加载的fxml页面。

请帮助。

感谢。

1 个答案:

答案 0 :(得分:5)

Application的{​​{3}}方法旨在接受varargs参数:

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

因此你可以传递像:

这样的参数
launch(MainApp.class, "--FXMLFile=Sample.fxml", "UnnamedArgument");

然后在launchinit方法中,您可以使用start方法获取这些参数:

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

您可以使用已命名或未命名的参数(在示例中,第一个被命名为第二个未命名。getParameters()方法返回Map中的命名参数,getNamed() method返回List中未命名的参数,而getUnnamed()返回已命名和未命名的参数作为原始list

来自getParameters()的javadoc注意:

  

注意:不应从应用程序调用此方法   构造函数,因为它将返回null。我可以在init()中调用 t   方法或之后的任何时间。