我正在学习本教程:https://docs.oracle.com/javase/8/javafx/get-started-tutorial/hello_world.htm
上面写着:
“JavaFX 应用程序通过阶段和场景来定义用户界面容器。JavaFX Stage 类是顶级 JavaFX 容器。JavaFX Scene 类是所有内容的容器...”
“在 JavaFX 中,场景的内容表示为节点的分层场景图。在此示例中,根节点是 StackPane 对象...”
我不明白 Stage 对象的意义是什么。如果 StackPane 是根节点(我了解整个树结构),并且如果 Scene 是所有内容的容器,那么 Stage 在做什么?为什么场景不能完成它所做的事情?
这是代码:
public class HelloWorld extends Application {
@Override
public void start(Stage primaryStage) {
// TODO Auto-generated method stub
Button btn = new Button("Say 'Hello World'");
btn.setOnAction((ActionEvent event) -> System.out.println("Hello World!"));
StackPane root = new StackPane();
root.getChildren().add(btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
最佳答案
这基本上是关注点的分离。
Stage
是一个用于修改外观、标题、位置等的对象。 window
的Scene
用于布局和处理事件等。
在单独的类中实现功能是一项设计决策,它很可能还受到操作系统和场景(如果完全由所提供的窗口内的工具包呈现)提供的窗口这一事实的影响。
但是,Scene
也可以在用于将 JavaFX 嵌入其他 GUI 库(FXCanvas
、JFXPanel
)的容器中使用。
关于JavaFX - Stage 参数的重点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40690212/