javafx imageview heightProperty 绑定不起作用
javafx imageview heightProperty binding don't work
作为新手,我在开发用于图像查看的演示 JavaFX 程序时遇到了问题。在这里,我在 BorderPane 中心位置有一个 ImageView,它被 StackPane 和 VBox 包裹着。其中 StackPane 始终随 VBox 一起增长,我将 ImageView 与 StackPane 宽度和高度 属性 绑定,以便我的 ImageView 在调整大小时更改其 setFitHeight 和重量 window。它可以正常工作,但问题是当 window 从最大值调整大小时,图像不会调整其高度。我发现 StackPane 的 heightProperty 更改侦听器不会调用。
所以我要解决这个问题来实现我的目标。?它是某种 JavaFX 错误还是我缺乏知识?
这是我的图像视图 fxml 代码:
<center>
<VBox fx:id="imageVBox" alignment="CENTER" BorderPane.alignment="CENTER">
<BorderPane.margin>
<Insets />
</BorderPane.margin>
<StackPane fx:id="stackPane" VBox.vgrow="ALWAYS">
<ImageView fx:id="imageView" fitHeight="250.0" fitWidth="300.0" nodeOrientation="INHERIT" onDragDropped="#getDragImage" onDragOver="#dragOver" pickOnBounds="true" preserveRatio="true" StackPane.alignment="CENTER">
<viewport>
<Rectangle2D />
</viewport>
</ImageView>
</StackPane>
</VBox>
我的 java 将 ImageView 与 StackPane 绑定的代码:
imageView.fitWidthProperty().bind(stackPane.widthProperty());
imageView.fitHeightProperty().bind(stackPane.heightProperty());
我遇到的问题:
- 我的程序window当我运行它
- 最大化window
- 当我将其调整为默认大小时出现问题,图像未按预期调整大小
好吧,我从那个 post 答案 JavaFX - BorderPane/StackPane not resizing after children changed 中发现了问题,问题是我没有给 StackPane 任何进行裁剪所需的最小尺寸。所以我会 post 回答是否对某人有帮助。
所以我最终解决的绑定代码如下:
stackPane.setMinSize(0, 0);
imageView.fitWidthProperty().bind(stackPane.widthProperty());
imageView.fitHeightProperty().bind(stackPane.heightProperty());
作为新手,我在开发用于图像查看的演示 JavaFX 程序时遇到了问题。在这里,我在 BorderPane 中心位置有一个 ImageView,它被 StackPane 和 VBox 包裹着。其中 StackPane 始终随 VBox 一起增长,我将 ImageView 与 StackPane 宽度和高度 属性 绑定,以便我的 ImageView 在调整大小时更改其 setFitHeight 和重量 window。它可以正常工作,但问题是当 window 从最大值调整大小时,图像不会调整其高度。我发现 StackPane 的 heightProperty 更改侦听器不会调用。 所以我要解决这个问题来实现我的目标。?它是某种 JavaFX 错误还是我缺乏知识?
这是我的图像视图 fxml 代码:
<center>
<VBox fx:id="imageVBox" alignment="CENTER" BorderPane.alignment="CENTER">
<BorderPane.margin>
<Insets />
</BorderPane.margin>
<StackPane fx:id="stackPane" VBox.vgrow="ALWAYS">
<ImageView fx:id="imageView" fitHeight="250.0" fitWidth="300.0" nodeOrientation="INHERIT" onDragDropped="#getDragImage" onDragOver="#dragOver" pickOnBounds="true" preserveRatio="true" StackPane.alignment="CENTER">
<viewport>
<Rectangle2D />
</viewport>
</ImageView>
</StackPane>
</VBox>
我的 java 将 ImageView 与 StackPane 绑定的代码:
imageView.fitWidthProperty().bind(stackPane.widthProperty());
imageView.fitHeightProperty().bind(stackPane.heightProperty());
我遇到的问题:
- 我的程序window当我运行它
- 最大化window
- 当我将其调整为默认大小时出现问题,图像未按预期调整大小
好吧,我从那个 post 答案 JavaFX - BorderPane/StackPane not resizing after children changed 中发现了问题,问题是我没有给 StackPane 任何进行裁剪所需的最小尺寸。所以我会 post 回答是否对某人有帮助。
所以我最终解决的绑定代码如下:
stackPane.setMinSize(0, 0);
imageView.fitWidthProperty().bind(stackPane.widthProperty());
imageView.fitHeightProperty().bind(stackPane.heightProperty());