Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用getController()访问javafx控制器类与调用控制器类的默认构造函数之间的区别_Javafx_Javafx 2_Fxml_Javafx 8 - Fatal编程技术网

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

使用getController()访问javafx控制器类与调用控制器类的默认构造函数之间的区别,javafx,javafx-2,fxml,javafx-8,Javafx,Javafx 2,Fxml,Javafx 8,对于访问javafx控制器类,我有一些疑问。我已经看到,我们一直使用fxmloader类的getController()方法来访问控制器类。我们为什么不使用new操作符调用构造函数并访问它呢。i、 e.喜欢 TestController mc = new TestController(); 关于构造函数调用的使用,我想到了一些事情。您应该自己加载FXML文件,解析它并构造其中定义的节点图,然后执行以下步骤: @FXML注释字段必须绑定在节点图和控制器类之间 控制器中的EventHandl

对于访问javafx控制器类,我有一些疑问。我已经看到,我们一直使用
fxmloader
类的
getController()
方法来访问控制器类。我们为什么不使用
new
操作符调用构造函数并访问它呢。i、 e.喜欢

 TestController mc =  new TestController();

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

  • @FXML
    注释字段必须绑定在节点图和控制器类之间
  • 控制器中的EventHandler必须连接到FXML中定义的正确节点
  • 在正确的时间在正确的位置调用构造函数的
    initialize()
    方法
  • 还有更多的员工在
    fxmloader
    加载()时工作
这些人员可以在FXMLLoader的源代码中找到。
话虽如此,您仍然可以自己调用构造函数,但在调用FXMLLoader的加载方法之前将其设置为FXMLLoader,如下所示:

TestController mc = new TestController();
FXMLLoader loader = new FXMLLoader();
loader.setController(mc);
loader.load();

通过这种方式,上述所有“脏活”将由FXMLLoader处理,然后“别担心,开心点”:。

您希望引用什么?您希望引用新控制器,还是希望引用FXMLLoader创建并初始化的控制器
newtestcontroller()
提供第一个,而
loader.getController()
提供第二个。我想要初始化的控制器。我问这个问题是因为我只是想知道使用构造函数调用是否也可以做与使用getController()相同的事情。它似乎像乌鲁克人的回答中提到的那样起作用。