private void createNewStage(int level, Stage owner, boolean onTop) { Stage stage = new Stage(); stage.initOwner(owner); stage.setTitle(level == 0 ? "Root" : "Child " + level); stage.setAlwaysOnTop(onTop); VBox root = new VBox(15); root.setPadding(new Insets(20)); Scene scene = new Scene(root); stage.setScene(scene); ToggleButton onTopButton = new ToggleButton(onTop ? DISABLE_ON_TOP : ENABLE_ON_TOP); onTopButton.setSelected(onTop); stage .alwaysOnTopProperty() .addListener( (observable, oldValue, newValue) -> { onTopButton.setSelected(newValue); onTopButton.setText(newValue ? DISABLE_ON_TOP : ENABLE_ON_TOP); }); onTopButton.setOnAction(event -> stage.setAlwaysOnTop(!stage.isAlwaysOnTop())); CheckBox box = new CheckBox("Child stage always on top"); box.setSelected(true); Button newStageButton = new Button("Open child stage"); newStageButton.setOnAction(event -> createNewStage(level + 1, stage, box.isSelected())); root.getChildren().addAll(onTopButton, box, newStageButton); stage.show(); }