首頁 >Java >java教程 >JavaFX FXML:建構子與 `initialize()` 方法 – 有什麼不同?

JavaFX FXML:建構子與 `initialize()` 方法 – 有什麼不同?

Patricia Arquette
Patricia Arquette原創
2024-12-05 19:46:16820瀏覽

JavaFX FXML: Constructor vs. `initialize()` Method – What's the Difference?

JavaFX FXML 控制器:區分建構子和初始化方法的角色

在JavaFX 中,FXML 用於以聲明方式建構使用者介面。 FXML 檔案的 fx:controller 屬性中指定的控制器類別充當 GUI 元素的交互邏輯。兩個生命週期方法,建構函數和initialize()方法,在初始化控制器時起著至關重要的作用。

先呼叫建構函數,然後注入@FXML欄位及其對應的Java物件。隨後,執行initialize()方法。

建構子與Initialize方法

建構子和initialize()方法的關鍵區別在於初始化的時機它們的執行以及對 FXML 註解的存取。建構函數首先執行,但它無法存取用@FXML註解的欄位。這些欄位只能在initialize()方法中存取。

這允許建構函式在FXML元件注入之前執行任務,而initialize()方法可以存取和操作這些注入的元件。

實際使用

構造函數應該用於在 GUI 完全載入之前需要執行的任務,例如從一個資料庫。另一方面,initialize() 方法適合初始化 GUI 元件,例如設定事件處理程序或修改其預設值。

範例

考慮以下程式碼:

public class MainViewController {

    // Constructor
    public MainViewController() {
        System.out.println("first");
    }

    // Initialize method
    @FXML
    public void initialize() {
        initializeComponents();
        System.out.println("second");
    }

    private void initializeComponents() {
        // Initialize GUI components, e.g., add event handlers
    }
}

在此範例中,建構函式在將任何 Java 物件注入到FXML 註解欄位。然後,在註入這些欄位後,initialize() 方法會列印「秒」。這演示了這些生命週期方法的順序執行。

以上是JavaFX FXML:建構子與 `initialize()` 方法 – 有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn