[英]JavaFX : When/Where are elements/controls instantiated?
好吧,我有我的第一个JFX App Up&Running。
现在,我要问自己,如何将所有事情完美地包裹在幕后。 如何通过适当的实例化和全部将这一系列FXML转换为Java代码? 它是如何工作的 ?
我曾向Google询问,如果我知道该写些什么,但到目前为止,我对如何使用它有很多了解,但对如何制造却了解不多。
魔术发生在FXMLLoader
内部。
它接收一个FXML文件,并使用XML解析器对其进行解析。 您不得不使用一组定义良好的XML节点,并且加载程序知道如何在运行时将这些XML节点的每种类型“转换”为相应的java对象(转换为JavaFX Node
)。 如果XML文件的格式不正确(不适合定义的结构),则会出现异常。 这样,您的节点被创建,剩下的一件事是:填充控制器。
要填充控制器,它将使用反射创建指定控制器类的实例并设置其数据成员。 它遍历内部@FXML
注释的字段,然后将每个字段设置为具有匹配的fx:id
属性的已创建对象之一。
最后,默认情况下,在控制器实例上调用public initialize
方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.