【问题标题】:JavaFX - What is the point of the Stage argument?JavaFX - Stage 参数的意义何在?
【发布时间】:2017-04-03 01:54:49
【问题描述】:

我正在阅读本教程: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);
    }

}

【问题讨论】:

标签: java javafx scene stage


【解决方案1】:

这基本上是关注点的分离。

Stage 是一个用于修改外观、标题、位置等的对象。其中windowScene 用于布局和处理事件等。

在单独的类中实现功能是一项设计决策,这很可能还受到以下事实的影响:一个窗口是由操作系统提供的,如果完全由提供的窗口内的工具包渲染,则该场景会影响该场景。

不过,Scene 也可用于将 JavaFX 嵌入其他 GUI 库的容器中(FXCanvasJFXPanel)。

【讨论】:

    猜你喜欢
    • 2012-12-29
    • 2014-09-26
    • 2016-11-20
    • 1970-01-01
    • 2016-11-08
    • 2023-03-18
    • 2015-12-07
    • 1970-01-01
    相关资源
    最近更新 更多