簡體   English   中英

初始化控制器和FXML鏈接控制器之間的區別?

[英]Difference between initialized controllers and FXML linked controllers?

直到最近我才知道你可以在FXML文件中設置帶有fx:controller ,所以我依靠FXMLLoader's setController來管理鏈接。

那么,是否有任何理由使用一個而不是像可overrideable initialize()方法有用的特定情況?

為fxml文件設置控制器的兩種方法之間沒有功能差異。 但是,就何時使用而言略有區別。

  1. 如果你的控制器在調用它自己的initialize()之前不需要任何外部對象來初始化它的狀態,換句話說你的控制器類有一個no-arg constructor (或者你調用FXMLLoadersetControllerFactory()並為它提供實現如何控制器應該被初始化並且FXMLLoader完全可以管理,然后你去fx:controller並將它設置在fxml文件本身。 如果有這樣的方法, FXMLLoader將加載控制器並調用其initialize() 這是鏈接控制器和fxml文件的默認方式。

  2. 如果控制器的構造函數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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM