private void onSceneChanged(Scene oldScene, Scene newScene) { Window oldWindow = null; Window newWindow = null; Node oldFocusOwner = null; Node newFocusOwner = null; if (oldScene != null) { oldWindow = oldScene.windowProperty().get(); oldScene.windowProperty().removeListener(windowObserver); oldFocusOwner = oldScene.focusOwnerProperty().get(); oldScene.focusOwnerProperty().removeListener(focusOwnerObserver); } if (newScene != null) { newWindow = newScene.windowProperty().get(); newScene.windowProperty().addListener(windowObserver); newFocusOwner = newScene.focusOwnerProperty().get(); newScene.focusOwnerProperty().addListener(focusOwnerObserver); } onWindowChanged(oldWindow, newWindow); onFocusOwnerChanged(oldFocusOwner, newFocusOwner); }