javafx imageview heightProperty绑定不起作用

时间:2018-05-03 06:56:49

标签: javafx imageview image-resizing property-binding

我面临的问题是开发一个用于图像查看的演示JavaFX程序作为新手。这里我在BorderPane中心位置有一个ImageView,它用StackPane和VBox包装。其中StackPane总是与VBox一起增长,我将ImageView与StackPane Width和Height属性绑定在一起,这样当我调整窗口大小时,我的ImageView将更改其setFitHeight和Weight。它可以正常工作,但问题是当窗口从最大值调整大小时,图像不会调整其高度。我发现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());

我遇到的问题:

  1. 我运行时的程序窗口
  2. my program window when i run it

    1. 最大化窗口
    2. maximize window

      1. 当我将其调整为默认值时,问题发生了,图片没有按预期调整大小
      2. when i resize it to default the problem occured, image don't resize as expected

1 个答案:

答案 0 :(得分:1)

好吧,我从帖子回答LiveXaml发现问题,问题是我没有给StackPane任何最小尺寸,这是剪辑所需的。所以,如果它可以帮助某人,我会发布答案。

所以我最终解决的绑定代码如下所示:

stackPane.setMinSize(0, 0);
imageView.fitWidthProperty().bind(stackPane.widthProperty());
imageView.fitHeightProperty().bind(stackPane.heightProperty());