(JavaFX)(SceneBuilder)如果一切都设置为AnchorPane,窗口大小调整时如何自动调整场景大小?

(JavaFX)(SceneBuilder)如果一切都设置为AnchorPane,窗口大小调整时如何自动调整场景大小?

问题描述:

我在fxml文件中的所有代码都是在一个锚窗格中设置的,我想知道是否有一种简单的方法来允许整个场景在窗口大小调整时自动调整大小?(JavaFX)(SceneBuilder)如果一切都设置为AnchorPane,窗口大小调整时如何自动调整场景大小?

FXML文件:

<?xml version="1.0" encoding="UTF-8"?> 

<?import javafx.scene.image.Image?> 
<?import javafx.scene.image.ImageView?> 
<?import javafx.scene.layout.AnchorPane?> 

<fx:root maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" type="AnchorPane" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="csgocaseopener.InventoryController"> 
    <children> 
     <ImageView fitHeight="400.0" fitWidth="600.0" pickOnBounds="true"> 
     <image> 
      <Image url="@back.png" /> 
     </image> 
     </ImageView> 
     <AnchorPane layoutX="38.0" layoutY="65.0" prefHeight="270.0" prefWidth="525.0" /> 
     <ImageView fx:id="backbtn" fitHeight="45.0" fitWidth="45.0" layoutY="-1.0" onMouseClicked="#handleInventoryBack" pickOnBounds="true" preserveRatio="true" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="-1.0"> 
     <image> 
      <Image url="@backbtn.png" /> 
     </image> 
     </ImageView> 
    </children> 
</fx:root> 
+0

当调整窗口大小时,您的'AnchorPane'正在调整大小。在给定的代码中,您用图像填充整个“场景”,所以我假设您要调整图像大小以填充窗口。 – MBec

+0

是的,我只是想要一切填满窗口的大小 – Tresk33

绑定ImaveView适合宽度/高度属性Stage宽度/高度属性。该解决方案不会保持图像比例,因此它会变形。

ImageView imageView = new ImageView(new Image(getClass().getResourceAsStream("test.png"))); 
//imageView.setPreserveRatio(true); //uncomment to keep image ratio. 
imageView.fitHeightProperty().bind(stage.heightProperty()); 
imageView.fitWidthProperty().bind(stage.widthProperty());