JavaFx图像调整大小

我有一个带有菜单顶部的borderPane,左边的网格和中心的图像.我希望图像的大小与边框的中心相同,因为现在图像越过我的网格.

我试过这个:

           imageView.fitWidthProperty().bind(box.widthProperty());

其中imageView是我的图像的名称,框是BorderPane对象.谢谢.

最佳答案 请参阅JavaFX功能请求
RT-21337 Add ImageViewPane and MediaViewPane controls ,其中包含示例ImageViewPane实现的代码附件,该实现将将其包含的ImageView的大小调整为该区域可用的区域.要获得所需的行为,您可能还需要在ImageViewPane上实现
computeMinWidth
computeMinHeight,以便它们返回零而不是Image的最小大小.

now the image goes over my grid

这是因为图像的最小尺寸目前大于BorderPane中心的可用空间:

BorderPane does not clip its content by default, so it is possible that childrens’ bounds may extend outside its own bounds if a child’s min size prevents it from being fit within it space.

防止中心内容溢出边界的一些潜在替代方案:

>在中心节点上手动设置clip以防止它溢出边框.
>动态调整ImageView的大小,如上面链接的ImageViewPane示例中所示.
>将ImageView放在ScrollPane中.
>使用css -fx-background-image attributes显示并动态调整图像大小,而不是使用ImageView.
>在设置边框内容之前首先设置边框的中心,这样它将在边框内容下方呈现.
>当节点大于可用显示区域时,使用边框(例如HBox,VBox等)的不同构造,这些构造不与节点重叠.

I tried this: imageView.fitWidthProperty().bind(box.widthProperty());

我从提供的代码中猜测,这不起作用,因为图像的封闭框是某种动态可调整大小的窗格,因此框的最小宽度由图像的宽度决定,反之亦然.

点赞