我需要控制器中的当前阶段,搜索后我找到了两个解决方案:
- 在初始化时将舞台传递给我的控制器(就像那样)
- 从控件中获取它(https://stackoverflow.com/a/12003426/2039619)
什么是最好的解决方案?
我需要控制器中的当前阶段,搜索后我找到了两个解决方案:
什么是最好的解决方案?
从 FXML 控制器获取舞台可能很棘手,就好像它尚未完成加载一样,您无法通过组件(在您的 FXML 中)访问场景,因此无法访问舞台(空指针!)。您必须在初始化方法中添加代码(来自 Initializable 接口),以便在运行时从控制器中声明的任何组件安全地获取当前阶段。
另一个选择对我来说似乎更好,因为您可以尽快对舞台进行处理,这也意味着在渲染当前 FXML 之前,当您将舞台显式插入控制器时(使用设置器,您添加对它的引用) ,您无需等待当前 FXML 中的 GUI 内容。缺点是您需要添加显式代码以将舞台交付给您的 FXML 控制器(以及从控制器到控制器等)。