I wrote this controller to keep track of the different scenegraphes.
public class ScreenController { private HashMap<String, Pane> screenMap = new HashMap<>(); private Scene main; public ScreenController(Scene main) { this.main = main; } protected void addScreen(String name, Pane pane){ screenMap.put(name, pane); } protected void removeScreen(String name){ screenMap.remove(name); } protected void activate(String name){ main.setRoot( screenMap.get(name) ); } }
So I can write:
ScreenController screenController = new ScreenController(scene); screenController.add("calculator", FXMLLoader.load(getClass().getResource( "calculator.fxml" ))); screenController.add("testSwitch", FXMLLoader.load(getClass().getResource( "TestSwitch.fxml" ))); screenController.activate("calculator");
This was a workaround for a fullscreen application, where the MacOS fullscreen transition was shown every time a stage switches its scene.