Ich versuche ein Fenster zu öffnen, diesem Fenster möchte ich später noch ein Paar Parameter mitgeben.
Leider werden die Controller der includeds beim Aufruf mit null iniatlisiert.
Warum ist das so ?
Aufruf des Fensters :
Das init vom Fenster:
Hier die Klassen
Leider werden die Controller der includeds beim Aufruf mit null iniatlisiert.
Warum ist das so ?
Aufruf des Fensters :
Code:
// Fenster aufrufen und Parameter mitgeben
// Controller fuer neues Fenster festlegen
UserController uc = new UserController();
uc.injectMainController(appStartCont);
// Stage initialisieren
Stage ttStage = new Stage();
// ttStage.setTitle(getlangstring("FXMLHeaderTeachersTest.header"));
// FXML laden und Controller festlegen, FXML darf keinen Controller eingetragen haben
FXMLLoader loader = new FXMLLoader(getClass().getResource("/VIEWS/User.fxml"));
// Controller fuer Fenster laden , super
loader.setController(uc);
// ?
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 init vom Fenster:
Code:
public class UserController {
private AppStartController appStartCont;
// Untercontroller deklarieren, die Variable muss genau so heissen wie der Controller sonst funktioniert es nicht
@FXML private UserHeaderController UserHeaderController;
@FXML private UserTVCoursesController UserTVCoursesController;
public void injectMainController (AppStartController appstartcont) throws IOException {
// appStartController hier registrieren
this.appStartCont = appstartcont;
// diesen Controller in den UnterControllern registrieren
UserHeaderController.injectUserController(this);
UserTVCoursesController.injectUserController(this);
}
Hier die Klassen