添加参数启动方法JavaFX

Ben*_*enj 2 java arguments javafx

如何在应用程序javafx的start方法中传递参数?实际上,我通过以下行在另一个类中调用我的javafx应用程序:

mainController.getMainApp().launch(MainApp.class);
Run Code Online (Sandbox Code Playgroud)

在我的启动方法下面:

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

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

请帮忙。

谢谢。

DVa*_*rga 5

launch方法Application旨在接受varargs参数:

public static void launch(Class<? extends Application> appClass, String... args)
Run Code Online (Sandbox Code Playgroud)

因此,您可以传递如下参数:

launch(MainApp.class, "--FXMLFile=Sample.fxml", "UnnamedArgument");
Run Code Online (Sandbox Code Playgroud)

然后在initstart方法中,您可以使用getParameters()方法获取以下参数:

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

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

从getParameters()的javadoc中注意:

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