我正在使用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中遇到困難的話。 –