java - Java FX Application、Scene 和 Parent 之间是什么关系?

标签 java javafx

从我看过的教程来看,每个 Java FX 都必须有一个包含多个场景的应用程序。每个场景基本上都是一个 FXML 文件的持有者(或者可以硬编码)。

但是,当我尝试切换场景时,我遇到了保持窗口最大化的问题。

最终帮助我的是这个 How can I keep my window size while switching scenes in Java FX?

所以,我的问题基本上是 Application、Scene 和 Parent 之间的关系是什么?

我应该为每个 FXML 文件创建一个场景,还是只有一个场景并只替换父节点?

谢谢

最佳答案

Application :是为您创建环境的单个实例。它创建一个 primaryStage 并启动 javafx ui 线程。

Stage : 是一个窗口。您可以根据需要拥有任意数量的 StagesApplicationstart 方法中为您提供了一个Stage,与手动创建的Stages 相比,它有一些特殊的属性.

Scene :每个 Stage 一次只能容纳一个 SceneScenes 可以换出,但不鼓励这样做。最好只交换 Sceneroot

Parent : 一个简单的 Node 可以将其他 Node 作为子节点。每个 Scene 都需要一个 Parent 作为 root

FXML:与以上任何内容都无关。

单个 FXML 文件仅描述 Node(您从 FXMLLoader 获得的根节点)及其子节点的层次结构。您可以让 FXML 文件描述单个 ButtonScene 的根 Node 及其所有子项。 FXML 未绑定(bind)到单个 Scene

如果你愿意,你可以让 FXML 文件在 GridPane 中描述一个 Label 和一个 Textfield(就像一个标准的输入公式)和每当您在某处需要这种安排时加载它(即使在单个场景中也可以)。

关于java - Java FX Application、Scene 和 Parent 之间是什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39873287/

相关文章:

java - MySql自动增量错误

java - Hibernate - 自定义 ID 生成

java - Android 测试框架说明

java - 在没有中间类的情况下将数据插入到 JavaFX TableView

java - 无法在 AnchorPane 内调整 AnchorPane 的大小

java - ORM - 将 hibernate 与内存数据混合

java - 测试数组类类型对象时出现 Eclipse ClassNotLoadedException

java - 如何访问存储在 observableList 中的一堆元素(在我的例子中为 Gridpane 类型)?

java - 使 javafx 应用程序在一段时间内消失

java - 如何处理鼠标事件FXML