JavaFX : FXML et injection du contrôleur

Injection avec la méthode setController()

Vous pouvez créer un fichier FXML avec un éditeur de texte ou bien avec Scene Builder et ensuite le charger comme ceci :

Controller controller = new Controller(); 
FXMLLoader loader = new FXMLLoader(getClass().getResource("/view.fxml"));
loader.setController(controller);
Parent root = loader.load();

N'oubliez pas d'enlever l'attribut du fichier FXML :

fx:controller="package.Controller"

Si vous n'enlevez pas cet attribut et que vous appelez la fonction setController() le programme lèvera une exception.

javafx.fxml.LoadException: Controller value already specified.

Injection avec FXML

Si vous optez pour l'injection avec le FXML avec l'attribut fx:controller="package.Controller", vous pouvez obtenir le contrôleur avec la méthode getController().

FXMLLoader loader = new FXMLLoader(getClass().getResource("/view.fxml"));
Parent root = loader.load();
Controller controller = (Controller) fxmlLoader.getController();

Commentaires