13 20 Events and Handlers
Dans cette vidéo, nous abordons les événements et gestionnaires d'événements en JavaFX. Jusqu'ici, en interagissant avec les contrôles, nous avons vu que rien ne se passait — l'application ne réagissait pas. C'est normal : nous n'avons pas encore relié les actions de l'utilisateur à du code à exécuter. C'est précisément le rôle des event handlers.
Brancher un événement sur un bouton
Un event handler est une méthode appelée automatiquement par l'application en réponse à une interaction. Si on appuie sur Run dans IntelliJ, c'est IntelliJ qui exécute du code en réponse à ce clic — le même mécanisme que celui que nous allons mettre en place dans notre propre application.
Je crée un nouveau projet JavaFX et j'ajoute un Button à mon GridPane, avec un texte « Message », un rowIndex = 0 et un columnIndex = 0. Au lancement, le bouton est visible mais le clic ne déclenche rien : il n'y a pas de gestionnaire associé. Contrairement à une application console qui s'exécute linéairement, une application graphique attend un événement pour réagir.
Dans le fichier HelloController, je crée une méthode qui sera appelée au clic, puis dans le .fxml j'ajoute la propriété onAction="#nomMethode" sur le bouton. Au rechargement, cliquer affiche bien « Bonjour » dans la console. Premier event handler fonctionnel.
Récupérer la saisie d'un TextField
Ajoutons un TextField au GridPane pour personnaliser le message. Dans le fichier FXML, on lui attribue un fx:id :
<TextField fx:id="nameField" />
Côté contrôleur, on déclare une variable du même nom, annotée @FXML :
@FXML
private TextField nameField;
Il ne reste plus qu'à concaténer le texte saisi dans le handler : System.out.println("Bonjour " + nameField.getText());. En tapant « Tom » dans le champ puis en cliquant, la console affiche « Bonjour Tom ». Le contrôle est entièrement piloté par notre code. À bientôt dans la prochaine vidéo.
En résumé
Cette leçon JavaFX explique comment les interfaces utilisateur réagissent aux interactions utilisateur grâce aux événements et gestionnaires d'événements. On découvre que sans gestion d'événements, les contrôles (boutons, champs texte) changent d'état sans que l'application n'en soit consciente. L'exemple pratique montre comment créer un bouton réactif via la propriété "onAction" et comment récupérer les données saisies dans un TextField en utilisant l'annotation @FXML et la méthode getText().