如何创建javafx阶段

时间:2013-10-11 05:51:35

标签: javafx-2 javafx

我只是javafx的初学者。我刚看到ensemble.jar中的一些例子,并对以下程序有疑问。这里有两种方法startinit它接受Stage类型的参数。从init()调用start()。我怀疑是舞台装饰(添加组,progressindicator,gridpane)是在start方法中完成的。所以primaryStage.show()将显示装饰的舞台但是如果我写{ {1}} primaryStage1.show()然后还会显示装饰阶段。我想知道如何

包fx;

start()

1 个答案:

答案 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"?了解舞台在节目中的传播方式。