Ich habe ein BorderPane (verbunden mit einem MainController), die FXML für BorderPane verwendet <fx:include>
, um ein Label (mit einem Controller StatusBarController) in den unteren Bereich des BorderPane einzubinden. Leider wird der StatusBarController nicht in die MainController-Klasseninstanz eingefügt und ich kann nicht verstehen warum.
main.fxml: BorderPane mit der enthaltenen Statusleiste
%Vor%statusbar.fxml: Das Label und sein zugehöriger Controller
%Vor%Der MainController mit einem Feld für den StatusBarController:
%Vor%Und der Beginn der Anwendung:
%Vor%Der vollständige Quellcode meines Beispiels ist unter Ссылка
verfügbarDie Frage ist also: Warum wird der StatusBarController nicht in die Variable statusbarController des MainControllers injiziert?
Danke für jeden Hinweis!
Um @FXML
tag zu verwenden, müssen Sie fx:id
angeben.
Aktualisieren Sie Ihre main.fxml
:
Danach kannst du die nächsten Konstanten in deinem MainController.java
verwenden:
Beachten Sie, dass statusbarController
kein teilweise niedriger Klassenname ist, sondern fx:id
+ Controller
word.
Es scheint einen Fehler in netbeans 8.0 mit verschachtelten fxmls zu geben. Kann nicht auf Netbeans zählen, um das Controllerobjekt des verschachtelten fxml für Sie zu erstellen, es muss manuell in Ihren MainController eingefügt werden. Jedes Mal, wenn der Controller in Netbeans aktualisiert wird, wird er gelöscht, so dass es etwas mühsam sein kann. Für dieses Beispiel würde das
eingefügt werden@ FXML private StatusBarController StatusleisteController;
Zeile manuell in den Hauptcontroller in diesem Fall, dann funktioniert es normal. Sehr nützlich für die Organisation großer Fxmls / Controller.
Tags und Links controller javafx-2 code-injection fxml