Java FXML应用程序:外部类

时间:2018-11-14 16:00:46

标签: javafx fxml

正在开发一个名为EVIF VideoRouter的Java FXML应用程序。然后,主类为VideoRouter.java,控制器类为VideoRouterFXMLController.java。

我在VideoRouterFXMLController.java类中有一个方法,需要能够从应用程序中的其他外部类进行调用。基于广泛的搜索和阅读,我将主VideoRouter.java类中的FXML加载器代码更改为:

    FXMLLoader EVIFloader = new FXMLLoader(this.getClass().getResource("VideoRouterFXML.fxml"));
    Parent EVIFroot = (Parent) EVIFloader.load();
    VideoRouterFXMLController EVIFcontroller = EVIFloader.getController();

现在,据我所知,我应该以某种方式在主VideoRouter.java类中创建一个吸气剂,该吸气剂返回我在上面创建的EVIFcontroller实例?然后我可以在其他类中使用该getter并在返回的实例中调用该方法?

如果是这样,我很难确定将吸气剂确切放置在哪里。它进入控制器类还是主类?无论哪种情况,似乎都无法看到控制器实例以返回它。

我再次进行了广泛搜索,发现相关的帖子似乎无法解决我遇到的这个特定问题。有帮助吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

您已经部分解决了问题:在VideoRouterFXMLController类中创建VideoRouter成员变量,并使用getter公开它,然后在加载FXML之后将其设置为控制器实例,如代码中所示摘录您提供的内容。

话虽如此,我将为您的问题提出另一种方法,因为由于您的班级之间的高度耦合,这种方法通常不是一个好的设计。我建议将Observer pattern作为替代方法,并将EventBus作为实现此目的的库。