Hallo,
ich versuche gerade über einen Button in einer Menüleiste ein css-file zu laden. Dafür übergebe ich die stage an meinen MainController der sie weitergibt an den MenuController. Bis hier hin funktioniert auch noch alles und meine Tests geben mir die stage auch aus und ich könnte auch hier ein css-file laden. Wenn dann aber das Programm geladen ist und ich auf den Button klicke ist die übergebene Stage null und ich bekomme eine Exception. Kann mir jemand weiter helfen und mir sagen was ich falsch mache?
MainApp
MainController
MenuController
ich versuche gerade über einen Button in einer Menüleiste ein css-file zu laden. Dafür übergebe ich die stage an meinen MainController der sie weitergibt an den MenuController. Bis hier hin funktioniert auch noch alles und meine Tests geben mir die stage auch aus und ich könnte auch hier ein css-file laden. Wenn dann aber das Programm geladen ist und ich auf den Button klicke ist die übergebene Stage null und ich bekomme eine Exception. Kann mir jemand weiter helfen und mir sagen was ich falsch mache?
MainApp
Java:
package task_reminder;
import control.MainController;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class MainApp extends Application {
@Override
public void start(Stage stage) throws Exception {
Scene scene = new Scene(FXMLLoader.load(getClass().getResource("/view/MainView.fxml")));
stage.setScene(scene);
stage.show();
final FXMLLoader loader = new FXMLLoader(getClass().getResource("/view/MainView.fxml"));
final Parent root = (Parent)loader.load();
MainController controller = (MainController)loader.getController();
controller.setStage(stage);
}
public static void main(String[] args) {
launch(args);
}
}
MainController
Java:
package control;
import javafx.fxml.FXML;
import javafx.stage.Stage;
public class MainController {
private Stage stage;
@FXML
private TaskController taskController;
@FXML
private MenuController menuController;
@FXML
private void initialize() {
menuController.setMainViewController(taskController);
}
public void setStage(Stage stage) {
this.stage = stage;
this.menuController.setStage(this.stage);
}
}
MenuController
Java:
package control;
import javafx.scene.Scene;
public class MenuController{
private TaskController taskView;
private Scene scene;
@FXML protected void closeApplication() {
Platform.exit();
}
@FXML protected void changeStyles() {
if(this.scene == null)System.out.println("NULL"); // hier ist scene null
}
public void setMainViewController(TaskController taskView) {
this.taskView = taskView;
}
public void setStage(Stage stage) {
this.scene = stage.getScene();
if(this.scene != null)System.out.println("SCENE"); // prints scene
}
}