使用getController()访问javafx控制器类和调用控制器类的默认构造函数之间的区别

时间:2014-02-18 10:59:16

标签: javafx javafx-2 fxml javafx-8

我对访问javafx控制器类有一些疑问。我已经看到,我们一直使用getController()类的FXMLLoader方法来访问控制器类。为什么我们不使用new运算符并访问它来使用构造函数调用。即喜欢

 TestController mc =  new TestController();

1 个答案:

答案 0 :(得分:3)

关于构造函数调用的使用,我会想到一些事情。您应该自己加载FXML文件,解析它并构建其中定义的节点图,然后,执行以下步骤:

  • @FXML带注释的字段必须绑定在节点图和控制器类
  • 之间
  • 控制器中的eventHandlers必须附加到FXML中定义的右侧节点
  • 在正确的时间在正确的位置调用构造函数的initialize()方法
  • 以及FXMLLoader load()期间TestController mc = new TestController(); FXMLLoader loader = new FXMLLoader(); loader.setController(mc); loader.load(); 所做的更多工作人员。

可以使用FXMLLoader的源代码探索这些员工 话虽如此,您仍然可以自己调用构造函数,但在调用FXMLLoader的加载方法之前将其设置为FXMLLoader:

{{1}}

这样所有上面提到的“脏作品”都将由FXMLLoader处理,然后“别担心,快乐”:)。