【发布时间】:2015-05-11 15:10:55
【问题描述】:
直到最近我才知道你可以在FXML 文件中设置带有fx:controller 的控制器,所以我依靠FXMLLoader's setController 来管理链接。
那么,有什么理由像 overrideable initialize() 方法有用的特定情况那样使用一个而不是另一个?
【问题讨论】:
直到最近我才知道你可以在FXML 文件中设置带有fx:controller 的控制器,所以我依靠FXMLLoader's setController 来管理链接。
那么,有什么理由像 overrideable initialize() 方法有用的特定情况那样使用一个而不是另一个?
【问题讨论】:
为 fxml 文件设置控制器的两种方法在功能上没有区别。不过,在什么时候用哪个方面还是有细微差别的。
如果你的控制器在调用它自己的initialize() 之前不需要任何外部对象来初始化它的状态,换句话说你的控制器类有一个no-arg constructor(或者你调用FXMLLoader 的@987654325 @ 并提供控制器应该如何初始化的实现)并且完全可以由FXMLLoader 管理,然后你去fx:controller 并将其设置在 fxml 文件本身中。 FXMLLoader 将加载控制器并调用它的 initialize() 如果有这样的方法。这是链接控制器和 fxml 文件的默认方式。
setController() 以将您的控制器与 fxml 文件链接。这种技术通常与自定义控制器一起使用
【讨论】: