我的问题是,当我使用setResizable(false)时,我的场景会显示一个白色边框。 当我没有设置它时,false工作正常,但我需要将其设置为false。
代码:
Scene scene = new Scene(new StackPane());
LoginManager loginManager = new LoginManager(scene);
loginManager.showLoginScreen();
primaryStage.setResizable(false);
primaryStage.setScene(scene);
primaryStage.show();
我的ImageView位于我的AnchorPane
中<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="900.0" xmlns:fx="http://javafx.com/fxml" fx:controller="br.com.facilit.target.app.desktop.view.MainViewController">
<children>
<ImageView id="background" fitHeight="600.0" fitWidth="900.0" pickOnBounds="true">
<image>
<Image url="@../images/background.jpg" preserveRatio="true" smooth="true" />
</image>
答案 0 :(得分:2)
在尝试了太多东西之后,我发现了如何修复它。
我不知道为什么,但是当你设置了可靠的错误时,屏幕会自动获得一个额外的空间,位于右侧。要修复它,您应该将图像背景设置为大于屏幕宽度和高度,例如,如果在锚定窗格中使用900x600,则应将图像设置为920x620。
还有一次,我不知道为什么会这样,但这是我发现用css修复它的唯一方法。
答案 1 :(得分:1)
我有同样的问题,我以这种方式解决了:
primaryStage.setScene(scene);
primaryStage.setWidth(900);
primaryStage.setHeight(600);
primaryStage.setResizable(false);
primaryStage.show();
您必须在设置resizable属性之前设置场景并手动设置宽度/高度。这解决了我的问题。
答案 2 :(得分:0)
将maxSize()和minSize设置为图像的大小:
Scene scene = new Scene(new StackPane());
private final static double IMG_WIDTH = 900d;
private final static double IMG_HEIGHT = 600d;
LoginManager loginManager = new LoginManager(scene);
loginManager.showLoginScreen();
primaryStage.setResizable(false);
primaryStage.setMaxWidth(IMG_WIDTH);
primaryStage.setMaxHeight(IMG_HEIGHT);
primaryStage.setMinWidth(IMG_WIDTH);
primaryStage.setMinHeight(IMG_HEIGHT);
primaryStage.setScene(scene);
primaryStage.show();
检查图像的大小,如果它确实是900x600。
答案 3 :(得分:0)
使用此解决方案,但仅适用于jdk8
Stage.sizeToScene();