如何在应用程序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页面。
请帮助。
感谢。
答案 0 :(得分:5)
Application
的{{3}}方法旨在接受varargs参数:
public static void launch(Class<? extends Application> appClass, String... args)
因此你可以传递像:
这样的参数launch(MainApp.class, "--FXMLFile=Sample.fxml", "UnnamedArgument");
然后在launch
或init
方法中,您可以使用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 方法或之后的任何时间。