我正在阅读本教程:https://docs.oracle.com/javase/8/javafx/get-started-tutorial/hello_world.htm
它说:
" JavaFX应用程序通过舞台和场景定义用户界面容器。 JavaFX Stage类是顶级JavaFX容器。 JavaFX Scene类是所有内容的容器......"
"在JavaFX中,场景的内容表示为节点的分层场景图。在此示例中,根节点是StackPane对象..."
我不明白舞台对象的意义。如果StackPane是根节点(并且我理解整个树结构的东西),并且如果Scene是所有内容的容器,那么舞台在做什么?为什么不能通过场景做什么?
以下是代码:
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);
}
}
答案 0 :(得分:1)
这基本上是一个关注点。
Stage
是用于修改外观,标题,位置等的对象。 window
,Scene
用于布局和处理事件等。
在单独的类中实现功能是一个设计决策,很可能还会受到操作系统和场景提供窗口这一事实的影响,如果工具箱在提供的窗口内完全呈现的话。
但是Scene
可以用在用于将JavaFX嵌入其他GUI库的容器中(FXCanvas
,JFXPanel
)。