gpt4 book ai didi

java - 初始化 Controller 和 FXML 链接 Controller 之间的区别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:44:30 24 4
gpt4 key购买 nike

直到最近我才知道您可以在 FXML 文件中使用 fx:controller 设置 Controller ,所以我一直依赖于 FXMLLoader 的 setController 来管理链接。

那么,是否有任何理由像 overrideable initialize() 方法有用的特定情况一样使用一个而不是另一个?

最佳答案

为 fxml 文件设置 Controller 的两种方法在功能上没有区别。但是,在何时使用方面存在细微差别。

  1. 如果您的 Controller 在调用它自己的 initialize() 之前不需要任何外部对象来初始化它的状态,换句话说您的 Controller 类有一个 无参数构造函数(或者您调用 FXMLLoadersetControllerFactory() 并为其提供 Controller 应如何初始化的实现)并且完全可由 FXMLLoader 管理,然后找到 fx:controller 并将其设置在 fxml 文件本身中。 FXMLLoader 将加载 Controller 并调用它的 initialize() 如果有这样的方法。这是链接 Controller 和 fxml 文件的默认方式。

  2. 如果您的 Controller 有一个带有至少 1 个参数 的构造函数,或者在 Controller 的 initialize() 中,它需要访问必须在外部初始化的字段(不是在 Controller 类中),然后您手动管理 Controller 。您创建它的一个实例,就像使用任何其他 Java 类一样,初始化所需的内容,然后才调用 setController() 将您的 Controller 与 fxml 文件链接起来。此技术通常与自定义 Controller 一起使用

有关更多详细信息,请查看:http://docs.oracle.com/javase/8/javafx/api/javafx/fxml/doc-files/introduction_to_fxml.html#custom_components

关于java - 初始化 Controller 和 FXML 链接 Controller 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30171352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com