J'ai deux fichiers fxml
. Je les connecter avec une déclaration include
:L'injection du contrôleur JavaFX ne fonctionne pas
Le fichier "principal" fxml
ressemble à ce que:
<?import javafx.geometry.*?>
// ...
<BorderPane prefHeight="962" prefWidth="1280" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.MyMainController">
<center>
<SplitPane dividerPositions="0.63" BorderPane.alignment="CENTER">
<items>
<fx:include source="AnotherFile.fxml" />
// ...
</items>
</SplitPane>
</center>
<top>
// ...
</top>
</BorderPane>
Et le second (= "AnotherFile.fxml") comme ça:
<?import java.lang.*?>
// ...
<SplitPane dividerPositions="0.15" orientation="VERTICAL" prefHeight="400.0" prefWidth="500.0" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1">
<items>
// ...
<Label fx:id="oneOfMyLabels" text="myText" GridPane.columnIndex="2" GridPane.rowIndex="1" />
</items>
</SplitPane>
maintenant, je me sers des injections dans le "principal" -Controller application.MyMainController
:
@FXML
private Label oneOfMyLabels;
Si j'exécute le contrôleur, j'obtiens une exception java.lang.NullPointerException
, respectivement une . En mode de débogage, j'ai découvert que le Label
injecté est null
!
Maintenant, ma question: Impossible d'atteindre le MyMainController
à partir du "fichier fxml principal" les composants du fichier fxml inclus ?? Dois-je utiliser un propre contrôleur sur chaque fichier fxml, s'il est inclus ou non ?!
Merci pour votre aide !!
Il faut se souvenir que l'élément racine du fichier fxml inclus doit contenir un propre attribut fx: controller! – mrbela
Est-il possible d'injecter le 'MyMainController' dans le' AnotherController'? J'ai besoin d'invoquer une méthode dans le contrôleur principal hors du contrôleur secondaire ... – mrbela