Javafx 2 javafx阶段创建是如何完成的
我只是javafx的初学者。我刚刚在ensemble.jar中看到一些示例,对下面的程序有疑问。这里有两个方法Javafx 2 javafx阶段创建是如何完成的,javafx-2,javafx,Javafx 2,Javafx,我只是javafx的初学者。我刚刚在ensemble.jar中看到一些示例,对下面的程序有疑问。这里有两个方法start和init,它们都接受Stage类型的参数init()是从start()调用的。我怀疑阶段装饰(添加组、progressindicator、gridpane)是在start方法中完成的。因此primaryStage.show()将显示装饰的阶段,但如果我在start()中写入primaryStage1.show(),则显示装饰的阶段然后装饰好的舞台也在展示。我想知道怎么做 包裹
start
和init
,它们都接受Stage
类型的参数init()
是从start()
调用的。我怀疑阶段装饰(添加组、progressindicator、gridpane)是在start方法中完成的。因此primaryStage.show()
将显示装饰的阶段,但如果我在start()中写入primaryStage1.show()
,则显示装饰的阶段
然后装饰好的舞台也在展示。我想知道怎么做
包裹外汇
/**
* Copyright (c) 2008, 2012 Oracle and/or its affiliates.
* All rights reserved. Use is subject to license terms.
*/
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.control.ProgressIndicator;
import javafx.scene.layout.GridPane;
/**
* A sample that demonstrates the Progress Indicator control in various modes.
*
* @see javafx.scene.control.ProgressIndicator
* @related controls/ProgressBar
*/
public class ProgressIndicatorSample extends Application {
private void init(Stage primaryStage) {
Group root = new Group();
primaryStage.setResizable(false);
primaryStage.setScene(new Scene(root, 400,400));
GridPane g = new GridPane();
ProgressIndicator p1 = new ProgressIndicator();
p1.setPrefSize(50, 50);
ProgressIndicator p2 = new ProgressIndicator();
p2.setPrefSize(50, 50);
p2.setProgress(0.25F);
ProgressIndicator p3 = new ProgressIndicator();
p3.setPrefSize(50, 50);
p3.setProgress(0.5F);
ProgressIndicator p4 = new ProgressIndicator();
p4.setPrefSize(50, 50);
p4.setProgress(1.0F);
g.add(p1, 1, 0);
g.add(p2, 0, 1);
g.add(p3, 1, 1);
g.add(p4, 2, 1);
char x[]={'a','m'};
x.toString();
System.out.println(x);
g.setHgap(40);
g.setVgap(40);
root.getChildren().add(g);
}
public double getSampleWidth() { return 400; }
public double getSampleHeight() { return 400; }
@Override public void start(Stage primaryStage1) throws Exception {
init(primaryStage1);
primaryStage1.show();
}
public static void main(String[] args) { launch(args); }
}
论应用舞台创作
在启动应用程序时,JavaFX系统为系统创建初始阶段,并且在不显示它的情况下,将对该阶段对象的引用传递给应用程序的start方法
解释示例程序中发生的情况
这里只涉及一个阶段
当您启动JavaFX应用程序时(就像您在主方法中所做的那样),JavaFXToolkit系统将启动。JavaFX系统为应用程序创建初始阶段(窗口),但不显示它,而是将对该阶段的引用传递给start方法(您接受该方法作为参数primaryStage1)。然后将stage引用传递给init方法,该方法将所有内容(组、进度条等)放置到它放置在stage上的场景中。最后,执行返回到start方法,您请求显示stage(这告诉JavaFX系统在屏幕上显示stage并呈现stage内的内容)
除了JavaFX系统创建并传递到程序中的初始阶段外,您还可以在程序中创建更多的新阶段,以便在弹出对话框或其他原因中有其他阶段(窗口),但您没有这样做
关于创建附加阶段
要创建更多的新阶段,您可以执行以下操作(从Sergey的答案到)
关于对象引用传递
另见:
了解阶段在程序中是如何传递的。关于应用程序阶段创建
在启动应用程序时,JavaFX系统为系统创建初始阶段,并且在不显示它的情况下,将对该阶段对象的引用传递给应用程序的start方法
解释示例程序中发生的情况
这里只涉及一个阶段
当您启动JavaFX应用程序时(就像您在主方法中所做的那样),JavaFXToolkit系统将启动。JavaFX系统为应用程序创建初始阶段(窗口),但不显示它,而是将对该阶段的引用传递给start方法(您接受该方法作为参数primaryStage1)。然后将stage引用传递给init方法,该方法将所有内容(组、进度条等)放置到它放置在stage上的场景中。最后,执行返回到start方法,您请求显示stage(这告诉JavaFX系统在屏幕上显示stage并呈现stage内的内容)
除了JavaFX系统创建并传递到程序中的初始阶段外,您还可以在程序中创建更多的新阶段,以便在弹出对话框或其他原因中有其他阶段(窗口),但您没有这样做
关于创建附加阶段
要创建更多的新阶段,您可以执行以下操作(从Sergey的答案到)
关于对象引用传递
另见:
了解您的程序中该阶段是如何传递的。感谢您的解释,您应该获得+100,但不幸的是,我不允许这样做+1。我只是javafx的初学者,您能给我一些链接或书名来学习javafx基础吗参见,遵循,使用,并确保您熟练思考(真的)小项目并为其编写代码。感谢您对+100的解释,但不幸的是,我不被允许这样做+1。我只是javafx的初学者,您能给我一些链接或书名来学习javafx基础吗?请查看,遵循,使用,并确保您熟练-思考(真的)小项目,并为其编写代码。
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();