JavaFX - Stage 参数的重点是什么?

标签 java javafx scene stage

我正在学习本教程: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 是一个用于修改外观、标题、位置等的对象。 windowScene用于布局和处理事件等。

在单独的类中实现功能是一项设计决策,它很可能还受到操作系统和场景(如果完全由所提供的窗口内的工具包呈现)提供的窗口这一事实的影响。

但是,Scene 也可以在用于将 JavaFX 嵌入其他 GUI 库(FXCanvasJFXPanel)的容器中使用。

关于JavaFX - Stage 参数的重点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40690212/

相关文章:

combobox - JavaFX组合框不刷新可见行数

java - 在 FXML Controller 类中找不到可注入(inject)字段

ios - SceneKit - 几何渗透

ios - 在 "game over"上的 Swift 中从场景移动到另一个 UIView 并处理场景?

java - 使用连接表的 Hibernate 一对一单向映射

java - 不能引用非静态方法且不允许使用 void 类型

java - 无法使用 JDK 10.0.2 使用 maven spock 执行目标

java - ManyToMany 和 OneToOne 关系的 Jpa 标准

swift : Updated Variable in a different scene

java - 我如何同时使用 org.joda.time.LocalDate 和 java.time.LocalDate;