Aller au contenu principal

EventHandler

Un EventHandler<T> est un gestionnaire qui reçoit les événements JavaFX et exécute une logique dans la méthode handle(T event).

Exemple complet en JavaFX

Cet exemple gère :

  • Un ActionEvent sur un bouton.
  • Un KeyEvent pour valider avec Entrée dans un champ texte.
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class EventHandlerDemo extends Application {
@Override
public void start(Stage stage) {
TextField field = new TextField();
field.setPromptText("Entrez votre nom");

Button button = new Button("Valider");
Label status = new Label("En attente...");

EventHandler<ActionEvent> onValidate = event -> {
String name = field.getText().trim();
if (name.isEmpty()) {
status.setText("Nom manquant");
} else {
status.setText("Bonjour " + name + " !");
}
};

button.setOnAction(onValidate);

field.addEventHandler(KeyEvent.KEY_PRESSED, event -> {
if (event.getCode() == KeyCode.ENTER) {
button.fire();
event.consume();
}
});

VBox root = new VBox(10, field, button, status);
stage.setScene(new Scene(root, 320, 160));
stage.setTitle("EventHandler");
stage.show();
}

public static void main(String[] args) {
launch(args);
}
}

Dans cet exemple, un même EventHandler<ActionEvent> est réutilisé par le bouton et déclenché au clavier.

La variante addEventHandler(type, handler) sert à empiler plusieurs gestionnaires pour un même type d’événement, au lieu de remplacer l’ancien comme le fait setOnAction.