JavaFX Controller两类initialize方法调用顺序与使用场景咨询
JavaFX Controller两种initialize方法说明
调用顺序
FXMLLoader完成所有@FXML标注的控件字段注入后,会按以下顺序执行初始化方法:
- 先调用Controller类实现
Initializable接口重写的带URL、ResourceBundle参数的initialize方法 - 再调用标注了
@FXML的无参initialize方法
各自适用场景
- 带参initialize(实现
Initializable接口)
仅在需要使用初始化参数时选用,典型场景包括:- 读取传入的
ResourceBundle完成界面多语言文本赋值 - 通过URL参数获取当前FXML文件的所在路径,加载同路径下的其他资源文件
- 读取传入的
- 无参
@FXMLinitialize(Scene Builder自动生成版本)
适合绝大多数常规初始化场景,无需实现接口,代码更简洁,典型场景包括:- 校验
@FXML注入的控件是否为空(即示例中的assert逻辑) - 给控件设置初始状态、初始值
- 绑定控件之间的属性关联
- 为控件注册事件监听器
- 校验
官方规则说明
该执行逻辑是JavaFX FXMLLoader的内置处理规则,在JavaFX官方API文档的FXMLLoader类说明、Controller初始化相关章节有明确表述。
内容的提问来源于stack exchange,提问作者MarekChr
相关产品推荐
相关产品推荐

