Ich versuche eine Injection aber die Untercontroller sind immer null.
Warum ist das so, ich habe schon alles kontrolliert aber finde nicht heraus was da los ist.
Vielleicht sieht ja jemand den Fehler .
Hier wird das Fenster aufgerufen
Das ist das fxml
Das ist der Kontroller vom Fenster und die beiden Controller aus den Tabs sind null
Warum ist das so, ich habe schon alles kontrolliert aber finde nicht heraus was da los ist.
Vielleicht sieht ja jemand den Fehler .
Hier wird das Fenster aufgerufen
Code:
TestVokController tvc = new TestVokController();
// Parameter festlegen
tvc.injectMainController(appStartCont);
tvc.setSubjectid(subjectid);
tvc.setSubjectname(subjectname);
tvc.setCourseid(courseid);
tvc.setCoursename(coursname);
tvc.setBlockid(blockid);
tvc.setBlockname(blockname);
tvc.setTeachertest(testvariant);
tvc.setTestlevel(testlevel);
// Stage initialisieren
Stage ttStage = new Stage();
ttStage.setTitle(getlangstring("FXMLHeaderTestWords.header"));
// FXML laden
FXMLLoader loader = new FXMLLoader(getClass().getResource("/VIEWS/TestVok.fxml"));
loader.setController(tvc);
// ?
Pane ttPane = (Pane) loader.load();
Scene ttScene = new Scene(ttPane);
// Wenn Fenster geschlossen wird, wird geprueft ob Voraussetzungen fuer unlocked da sind
ttStage.setOnCloseRequest(e -> {
});
ttStage.setScene(ttScene);
ttStage.initModality(Modality.APPLICATION_MODAL); // das Fenster kann nur durch schliessen verlassen werden
ttStage.initStyle(StageStyle.UTILITY); // nur schliessen kein minimieren, wichtig fuer Dialog Scenes
ttStage.show();
Das ist das fxml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Tab?>
<?import javafx.scene.control.TabPane?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane id="AnchorPane" prefHeight="737.0" prefWidth="1027.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
<children>
<TabPane fx:id="regpane" layoutX="8.0" layoutY="8.0" prefHeight="758.0" prefWidth="993.0" styleClass="panetabbase" stylesheets="@../CSS/PaneTab.css" tabClosingPolicy="UNAVAILABLE" tabMaxHeight="50.0" tabMaxWidth="300.0" tabMinHeight="30.0" tabMinWidth="235.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<tabs>
<Tab fx:id="regvoktestwritewords" closable="false" text="Vokabeltest">
<content>
<fx:include fx:id="voktestwritewords" source="TestVokWriteWords.fxml" />
</content>
</Tab>
<Tab fx:id="regvoktesttrainvoice" text="Train voice">
<content>
<fx:include fx:id="voktesttrainvoice" source="TestVokTrainVoice.fxml" />
</content>
</Tab>
</tabs>
</TabPane>
</children>
</AnchorPane>
Das ist der Kontroller vom Fenster und die beiden Controller aus den Tabs sind null
Code:
private AppStartController appStartCont;
@FXML private TestVokWriteWordsController testvokwritewordsController;
@FXML private TestVokTrainVoiceController testvoktrainvoiceController;
@FXML private TabPane regpane;
@FXML private Tab regvoktest;
@FXML private Tab regtrainvoice;
final static String USERID = System.getProperty("USERNO");
final static String USERSTATUS = System.getProperty("USERSTATUS");
String subjectid = "";
String subjectname = "";
String courseid = "";
String coursename = "";
String blockid = "";
String blockname = "";
String teachertest = "";
Integer testlevel = 0;
/**
* Initializes the controller class.
*/
public TestVokController () {
}
public void injectMainController (AppStartController appstartcont) {
this.appStartCont = appstartcont;
initstaticnodes ();
try {
try {
// MainController-Injektion
testvokwritewordsController.injectMainController(this);
testvoktrainvoiceController.injectMainController(this);
} catch (InstantiationException | IllegalAccessException | ClassNotFoundException | SQLException | JSONException ex) {
System.out.println(getlangstring("Class.AppStartController.init.failinappstart"));
Logger.getLogger(AppStartController.class.getName()).log(Level.SEVERE, null, ex);
}