当setResizable为false时,AnchorPane显示白色边框(JavaFX)

时间:2013-02-07 19:18:03

标签: java javafx-2 javafx

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

enter image description here

4 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

我有同样的问题,我以这种方式解决了:

primaryStage.setScene(scene);

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

primaryStage.show();

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

答案 2 :(得分: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。

答案 3 :(得分:0)

使用此解决方案,但仅适用于jdk8

  Stage.sizeToScene();