我有一个带有菜单顶部的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());
我从提供的代码中猜测,这不起作用,因为图像的封闭框是某种动态可调整大小的窗格,因此框的最小宽度由图像的宽度决定,反之亦然.