从我看过的教程来看,每个 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 : 是一个窗口。您可以根据需要拥有任意数量的 Stages
。 Application
在start
方法中为您提供了一个Stage
,与手动创建的Stages
相比,它有一些特殊的属性.
Scene :每个 Stage
一次只能容纳一个 Scene
。 Scenes
可以换出,但不鼓励这样做。最好只交换 Scene
的 root
。
Parent : 一个简单的 Node
可以将其他 Node
作为子节点。每个 Scene
都需要一个 Parent
作为 root
。
FXML:与以上任何内容都无关。
单个 FXML 文件仅描述 Node
(您从 FXMLLoader
获得的根节点)及其子节点的层次结构。您可以让 FXML 文件描述单个 Button
或 Scene
的根 Node
及其所有子项。 FXML 未绑定(bind)到单个 Scene
。
如果你愿意,你可以让 FXML 文件在 GridPane
中描述一个 Label
和一个 Textfield
(就像一个标准的输入公式)和每当您在某处需要这种安排时加载它(即使在单个场景中也可以)。
关于java - Java FX Application、Scene 和 Parent 之间是什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39873287/