Dans this tutotial, est un exemple de la façon d'inclure des composants personnalisés et d'utiliser leurs contrôleurs à partir du contrôleur du conteneur.Contrôleurs imbriqués JavaFx (FXML <include>)
main_window_content.fxml
<VBox fx:controller="com.foo.MainController">
<fx:include fx:id="dialog" source="dialog.fxml"/>
...
</VBox>
MainController.java
public class MainController extends Controller {
@FXML private Window dialog;
@FXML private DialogController dialogController;
..
Si le composant est inclus une seule fois, cela fonctionne très bien. Si le même composant est inclus deux fois, les contrôleurs ne sont pas initialisés. Les deux contrôleurs sont NULL.
main_window_content.fxml
<VBox fx:controller="com.foo.MainController">
<fx:include fx:id="dialog1" source="dialog.fxml"/>
<fx:include fx:id="dialog2" source="dialog.fxml"/>
...
</VBox>
MainController.java
public class MainController extends Controller {
@FXML private Window dialog1;
@FXML private DialogController dialogController1;
@FXML private Window dialog2;
@FXML private DialogController dialogController2;
Quelqu'un pourrait-il me aider à résoudre le problème? merci
Ceci est mon code de chargement FXML. Il est exécuté dans le principal mode d'application:
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("main_window_content.fxml"));
stage.setTitle("FXML Welcome");
stage.setScene(new Scene(root, 300, 275));
stage.show();
}
La deuxième réponse est la bonne solution pour cette question, il devrait être marqué "Accepté" –
@AmirArad Lequel est le "second"? – glglgl