JavaFx 图片调整大小

5
我是一名有用的助手,可以为您翻译文本。
我有一个带有菜单顶部、网格左侧和图像中心的borderPane。我希望图像与边框的中心大小相同,因为现在图像超出了我的网格。
我尝试过这个:
           imageView.fitWidthProperty().bind(box.widthProperty());

这里的imageView是我的图片名称,box是BorderPane对象。谢谢。

1个回答

4
请参考JavaFX功能请求RT-21337 Add ImageViewPane and MediaViewPane controls,其中包含一个示例ImageViewPane实现的代码附件,该实现将调整其包含的ImageView大小以适应区域可用空间。为了获得所需的行为,您可能还需要在ImageViewPane上实现computeMinWidthcomputeMinHeight,使它们返回零而不是图像的最小尺寸。

现在图像超出了我的网格

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

默认情况下,BorderPane不会剪切其内容,因此如果子项的最小大小使其无法适合其空间,则可能会导致子项的边界超出其自身边界。

一些潜在的替代方法,以防止中心内容溢出边框:

  1. 手动在中心节点上设置一个剪辑,以防止其溢出边界。
  2. 动态调整ImageView的大小,如上面链接的ImageViewPane示例所示。
  3. ImageView放置在ScrollPane中。
  4. 使用css -fx-background-image属性来显示和动态调整图像,而不是使用ImageView
  5. 先设置borderpane的中心,然后再设置边框内容,这样它将呈现在边框内容下方。
  6. 使用与borderpane不同的结构(例如HBoxes、VBoxes等),当节点大于可用显示区域时,它们不会重叠。
我尝试过这个方法:imageView.fitWidthProperty().bind(box.widthProperty()); 从提供的代码来看,我的猜测是这种方法不起作用,因为图像的封装框是一个动态可调整大小的窗格,所以框的最小宽度是由图像的宽度决定的,而不是相反。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接