繁体   English   中英

初始化控制器和FXML链接控制器之间的区别?

[英]Difference between initialized controllers and FXML linked controllers?

直到最近我才知道你可以在FXML文件中设置带有fx:controller ,所以我依靠FXMLLoader's setController来管理链接。

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

为fxml文件设置控制器的两种方法之间没有功能差异。 但是,就何时使用而言略有区别。

  1. 如果你的控制器在调用它自己的initialize()之前不需要任何外部对象来初始化它的状态,换句话说你的控制器类有一个no-arg constructor (或者你调用FXMLLoadersetControllerFactory()并为它提供实现如何控制器应该被初始化并且FXMLLoader完全可以管理,然后你去fx:controller并将它设置在fxml文件本身。 如果有这样的方法, FXMLLoader将加载控制器并调用其initialize() 这是链接控制器和fxml文件的默认方式。

  2. 如果控制器的构造函数at least 1 argument或者在控制器的initialize()则需要访问必须在外部初始化的字段(不在控制器类中),然后手动管理控制器。 您可以像创建任何其他Java类一样创建它的实例,初始化所需的内容,然后调用setController()将控制器与fxml文件链接。 此技术通常与自定义控制器一起使用

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM