[英]Difference between initialized controllers and FXML linked controllers?
直到最近我才知道你可以在FXML
文件中設置帶有fx:controller
,所以我依靠FXMLLoader's
setController
來管理鏈接。
那么,是否有任何理由使用一個而不是像可overrideable initialize()
方法有用的特定情況?
為fxml文件設置控制器的兩種方法之間沒有功能差異。 但是,就何時使用而言略有區別。
如果你的控制器在調用它自己的initialize()
之前不需要任何外部對象來初始化它的狀態,換句話說你的控制器類有一個no-arg constructor
(或者你調用FXMLLoader
的setControllerFactory()
並為它提供實現如何控制器應該被初始化並且FXMLLoader
完全可以管理,然后你去fx:controller
並將它設置在fxml文件本身。 如果有這樣的方法, FXMLLoader
將加載控制器並調用其initialize()
。 這是鏈接控制器和fxml文件的默認方式。
如果控制器的構造函數at least 1 argument
或者在控制器的initialize()
則需要訪問必須在外部初始化的字段(不在控制器類中),然后手動管理控制器。 您可以像創建任何其他Java類一樣創建它的實例,初始化所需的內容,然后調用setController()
將控制器與fxml文件鏈接。 此技術通常與自定義控制器一起使用
有關詳細信息,請查看此內容: http : //docs.oracle.com/javase/8/javafx/api/javafx/fxml/doc-files/introduction_to_fxml.html#custom_components
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.