我只是javafx的初学者。我刚看到ensemble.jar中的一些例子,并对以下程序有疑问。这里有两种方法start
和init
它接受Stage
类型的参数。从init()
调用start()
。我怀疑是舞台装饰(添加组,progressindicator,gridpane)是在start方法中完成的。所以primaryStage.show()
将显示装饰的舞台但是如果我写{ {1}} primaryStage1.show()
然后还会显示装饰阶段。我想知道如何
包fx;
start()
答案 0 :(得分:4)
在应用程序阶段创建
在启动应用程序时,JavaFX系统会为系统创建一个初始阶段,并且在不显示的情况下,将对此阶段对象的引用传递给应用程序的start方法。
解释示例程序中发生的事情
这里只涉及一个阶段。
启动JavaFX应用程序时(就像在main方法中一样),将启动JavaFX工具包系统。 JavaFX系统为您的应用程序创建一个初始阶段(窗口),但不显示它,而是将对该阶段的引用传递给您的start方法(您接受它作为参数primaryStage1)。您可以将该阶段引用传递给init方法,该方法将所有内容(组,进度条等)放入它放置在舞台上的场景中。最后,执行返回到start方法,并请求显示该阶段(告诉JavaFX系统在屏幕上显示舞台并在舞台内呈现内容)。
除了由JavaFX系统创建并传递到您的程序的初始阶段之外,您可以在程序中创建更多新阶段,以便为弹出对话框或其他原因设置其他阶段(窗口),但是你没有。
创建其他阶段
要创建更多新阶段,您可以执行以下操作(来自Sergey对How to create and show common dialog (Error, Warning, Confirmation) in JavaFX 2.0?的回答)
Stage dialogStage = new Stage();
dialogStage.initModality(Modality.WINDOW_MODAL);
dialogStage.setScene(new Scene(VBoxBuilder.create().
children(new Text("Hi"), new Button("Ok.")).
alignment(Pos.CENTER).padding(new Insets(5)).build()));
dialogStage.show();
传递对象引用
另见: Is Java "pass-by-reference" or "pass-by-value"?了解舞台在节目中的传播方式。