0

我的问题是,当我使用 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>

在此处输入图像描述

4

4 回答 4

2

在尝试了太多东西之后,我发现了如何解决它。

我不知道为什么,但是当您将 resible 设置为 false 时,屏幕会自动在下方和右侧获得额外的空间。要修复它,您应该将图像背景设置为大于屏幕宽度和高度,例如,如果您在锚窗格中使用 900x600,则应将图像设置为 920x620。

还有一次,我不知道为什么会这样,但这是我发现使用 css 修复它的唯一方法。

于 2013-03-25T12:33:49.403 回答
1

我有同样的问题,我是这样解决的:

primaryStage.setScene(scene);

primaryStage.setWidth(900);
primaryStage.setHeight(600);
primaryStage.setResizable(false);

primaryStage.show();

您必须在设置 resizable 属性之前设置场景并手动设置宽度/高度。这解决了我的问题。

于 2014-07-15T10:10:18.390 回答
0
  1. 将 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();
    
  2. 检查图像的大小,如果它真的是 900x600。

于 2013-02-11T00:32:48.223 回答
0

使用这个解决方案,但它只适用于 jdk8

  Stage.sizeToScene();
于 2020-11-22T02:01:46.137 回答