要回答您的问题“在构建控制器时FXMLLoader到底能做什么?”:
首先,它将尝试获取控制器实例:
- 如果FXMLLoader上已经设置了控制器实例,它将使用该实例。
- 如果在FXMLLoader上未设置控制器工厂,它将尝试为每个反射调用类的零参数构造函数。如果失败,则抛出InstantiationException。
- 如果设置了控制器工厂,它将调用该工厂来创建一个新的控制器实例。
获取控制器实例后,它将执行以下操作:
- 如果此类实现了Initializable,则它将调用public void initialize(URL url,ResourceBundle resourceBundle)。如果没有,它将检查是否存在一种方法,该方法使用零参数进行初始化,并通过反射进行调用。如果没有,它什么也不做。



