从我看过的教程中,每个Java FX必须有一个包含多个场景的应用程序。每个场景基本上都是FXML文件的持有者(或者可以写成硬编码)。
但是,当我尝试切换场景时,我遇到了保持窗口最大化的问题。
最终帮助我的是How can I keep my window size while switching scenes in Java FX?
所以,我的问题基本上是Application,Scene和Parent之间的关系是什么?
我想假设每个FXML文件都有一个场景,或只有一个场景,只是替换父节点?
由于
答案 0 :(得分:7)
Application:是一个为您创建环境的单个实例。它创建一个primaryStage
并启动javafx ui线程。
Stage:是一个窗口。您可以根据需要拥有尽可能多的Stages
。 Application
在Stage
方法中为您提供start
,与手动创建的Stages
相比,该方法具有一些特殊属性。
Scene:每个Stage
一次只能容纳一个Scene
。 Scenes
可以换出,但不鼓励这样做。最好只换出root
的{{1}}。
Parent:一个简单的Scene
,可以容纳其他Node
作为孩子。每个Nodes
只需Scene
Parent
。
FXML:与上述任何事情无关。
单个FXML文件只描述了root
(您获得Node
的根节点)及其子节点的层次结构。您可以使用FXML文件描述FXMLLoader
及Button
及其所有子项的单Node
或根Scene
。 FXML没有绑定到单个Scene
。
如果您愿意,您可以让FXML文件在Label
内描述Textfield
和GridPane
(如标准输入公式)并在每次需要此安排时加载它(即使在单个场景中,也可以随心所欲)。