Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JavaFX: Why does stage.setResizable(false) cause additional margins?

Tags:

This small JavaFX test application

import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.layout.BorderPane; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import javafx.stage.Stage;  public class ApplicationWithNonResizableStage extends Application {      public static void main(final String[] args) {         launch(args);     }      @Override     public void start(final Stage primaryStage) throws Exception {         final Rectangle rectangle = new Rectangle(200, 100, Color.POWDERBLUE);         final BorderPane pane = new BorderPane(rectangle);         final Scene scene = new Scene(pane);         primaryStage.setScene(scene);         primaryStage.setResizable(false);         primaryStage.show();     } } 

produce a window with unwanted padding:

stage with margin

Removing the call primaryStage.setResizable(false) also removes the effect:

stage without margin

What is going wrong?

like image 331
Jens Piegsa Avatar asked Dec 22 '13 17:12

Jens Piegsa


1 Answers

As already commented, this different behaviour of !/resizable smells like a bug (somebody might consider filing an issue ;-)

A shorter (than sizing manually) way around is to explicitly fit the stage to the scene:

primaryStage.setScene(scene); primaryStage.setResizable(false); primaryStage.sizeToScene(); 

Just noticed that this works for jdk8, but not jdk7.

For convenience, a bug update: the original report filed by jewelsea was closed as a duplicate of (in new coordinates) https://bugs.openjdk.java.net/browse/JDK-8089008 - still open, commented to be win-only.

like image 52
kleopatra Avatar answered Oct 11 '22 05:10

kleopatra