我正在使用JavaFX 2和Scala。JavaFX控制器如何访问其他服务?
我有class Application extends javafx.application.Application
它执行诸如读取应用程序配置等,然后它启动主窗口。
此主窗口需要连接到名为MainWindow
的控制器。我可以fx:controller="com.foo.bar.MainWindow"
做到这一点,但是,在这种情况下MainWindow
实例是无法访问我的应用程序的配置,等那来到我的脑海
一件事是实例化MainWindow
控制我自己的Application
类中并注入所有依赖关系,然后告诉主窗口视图,该控制器应该是我刚刚创建的实例。但是,我不知道如何做到这一点?
在JavaFX中访问控制器数据的首选方式是什么 - 通过某种依赖注入或其他方式?
换句话说,这种观点FXML:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.Scene?>
<?import javafx.scene.control.*?>
<BorderPane fx:controller="com.foo.bar.MainWindow" prefHeight="703.0" prefWidth="803.0" xmlns:fx="http://javafx.com/fxml">
...
会自动实例化一个com.foo.bar.MainWindow
控制器我(?):
...
class MainWindow {
var app: Application = null
...
}
在那里我有提到我的应用程序,这保存我想访问的信息:
class Application extends javafx.application.Application {
...
// Stuff I want to access, application also fires up the first scene.
}
问题是,我如何获得对主应用程序的引用?我怎样才能做依赖注入或任何等效的东西?
感谢您注册发布您的答案!这有很大的帮助,但是你知道我该如何编写Scala实现Callback,Object>'部分? –
Tower
什么是'注射器'?我无法在JavaFX包中找到它。 – Tower
对不起,我几乎不了解Scala。我相信Java和Scala泛型可以互操作,如果他们不会在javafx中遇到困难的话。 –