J'ai un FXML générique avec beaucoup de composants mais disons que c'est un textArea pour plus de simplicité.Java réutilisation générique FXML
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.TextArea?>
<TextArea fx:id="test" prefHeight="200.0" prefWidth="200.0" promptText="test data" xmlns="http://javafx.com/javafx/8.0.101" xmlns:fx="http://javafx.com/fxml/1" />
Et sur ce textArea vous pouvez voir qu'il a un ID de "test".
Donc, ma question est de savoir si vous pouvez réutiliser ce FXML dans plus de un contrôleur?
Ma première pensée a été mené par un contrôleur générique comme on le voit ci-dessous:
public abstract class GenericController {
Program program = Program.getInstance();
@FXML TextArea test;
@FXML
abstract void initialize();
abstract void setData();
}
Et pointer le FXML au GenericController. Et puis étendre dans un contrôleur plus spécifique. Mais je viens d'obtenir une erreur LoadExceptionError au fx: controller = "sample.Controllers.GenericController".
Il y a des choses plus avancées que vous pouvez faire en utilisant une usine de contrôleur, (qui, par exemple, vous pouvez combiner avec un cadre d'injection de dépendance) si vous avez besoin, mais On dirait que ce serait suffisant pour ce dont vous avez besoin. –
Juste essayé ceci et je reçois toujours 'javafx.fxml.LoadException: Aucun contrôleur spécifié.' – audittxl
@audittxl Alors vous faites quelque chose de mal. Vous appelez la méthode 'load()' sans argument, à droite, pas la méthode static 'load (URL)'? –