Maison > Java > javaDidacticiel > JavaFX FXML : constructeur vs méthode `initialize()` – Quelle est la différence ?

JavaFX FXML : constructeur vs méthode `initialize()` – Quelle est la différence ?

Patricia Arquette
Libérer: 2024-12-05 19:46:16
original
822 Les gens l'ont consulté

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

Contrôleur JavaFX FXML : distinguer les rôles du constructeur et de la méthode d'initialisation

Dans JavaFX, FXML est utilisé pour construire de manière déclarative des interfaces utilisateur. Une classe de contrôleur, telle que spécifiée dans l'attribut fx:controller du fichier FXML, sert de logique d'interaction pour les éléments de l'interface graphique. Deux méthodes de cycle de vie, le constructeur et la méthode initialize(), jouent un rôle essentiel dans l'initialisation du contrôleur.

Le constructeur est invoqué en premier, suivi de l'injection de champs @FXML avec leurs objets Java correspondants. Par la suite, la méthode initialize() est exécutée.

Constructeur vs méthode Initialize

La distinction clé entre le constructeur et la méthode initialize() réside dans le timing de leur exécution et leur accès aux annotations FXML. Le constructeur s'exécute en premier, mais il ne peut pas accéder aux champs annotés avec @FXML. Ces champs ne sont accessibles que dans la méthode initialize().

Cela permet au constructeur d'effectuer des tâches avant l'injection du composant FXML, tandis que la méthode initialize() peut accéder et manipuler ces composants injectés.

Utilisation pratique

Le constructeur doit être utilisé pour les tâches qui doivent être effectuées avant que l'interface graphique ne soit complètement chargée, comme la lecture de données à partir d'un base de données. La méthode initialize(), en revanche, convient à l'initialisation des composants de l'interface graphique, tels que la définition de gestionnaires d'événements ou la modification de leurs valeurs par défaut.

Exemple

Considérez le code suivant :

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
    }
}
Copier après la connexion

Dans cet exemple, le constructeur imprime "d'abord" avant que des objets Java ne soient injectés dans le Champs annotés FXML. Ensuite, la méthode initialize() affiche "seconde" après l'injection de ces champs. Cela démontre l'exécution séquentielle de ces méthodes de cycle de vie.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal