We noticed that replacing the scene in a fullscreen stage switches off fullscreen mode. This behaviour is AFAIK not documented anywhere, hence we assume it is unwanted.
The following program can be used to proof it (compile, run, then click on "change fullscreen mode" to enable fullscreen mode, then click on "next window".
Expected Result: Changes scene, but keeps stage in fullscreen mode.
Actual Result: Changes scene, but disabled fullscreen mode.
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class StageTest extends Application {
public static void main(final String[] args) {
Application.launch(args);
}
@Override
public void start(final Stage stage) {
final Button button = new Button("next window");
button.setOnAction(e -> {
final Scene oldScene = stage.getScene();
final Button newButton = new Button("previous window");
newButton.setOnAction(e2 -> stage.setScene(oldScene));
final Button buttonFullscreen = new Button("change fullscreen mode");
buttonFullscreen.setOnAction(e2 -> stage.setFullScreen(!stage.isFullScreen()));
final Scene newScene = new Scene(new HBox(newButton, buttonFullscreen));
stage.setScene(newScene);
});
final Button buttonFullscreen = new Button("change fullscreen mode");
buttonFullscreen.setOnAction(e -> stage.setFullScreen(!stage.isFullScreen()));
final Scene scene = new Scene(new VBox(button, buttonFullscreen));
stage.setTitle("Stage Test!");
stage.setScene(scene);
stage.show();
}
}
The following program can be used to proof it (compile, run, then click on "change fullscreen mode" to enable fullscreen mode, then click on "next window".
Expected Result: Changes scene, but keeps stage in fullscreen mode.
Actual Result: Changes scene, but disabled fullscreen mode.
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class StageTest extends Application {
public static void main(final String[] args) {
Application.launch(args);
}
@Override
public void start(final Stage stage) {
final Button button = new Button("next window");
button.setOnAction(e -> {
final Scene oldScene = stage.getScene();
final Button newButton = new Button("previous window");
newButton.setOnAction(e2 -> stage.setScene(oldScene));
final Button buttonFullscreen = new Button("change fullscreen mode");
buttonFullscreen.setOnAction(e2 -> stage.setFullScreen(!stage.isFullScreen()));
final Scene newScene = new Scene(new HBox(newButton, buttonFullscreen));
stage.setScene(newScene);
});
final Button buttonFullscreen = new Button("change fullscreen mode");
buttonFullscreen.setOnAction(e -> stage.setFullScreen(!stage.isFullScreen()));
final Scene scene = new Scene(new VBox(button, buttonFullscreen));
stage.setTitle("Stage Test!");
stage.setScene(scene);
stage.show();
}
}