5

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

我试过这个:

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

其中 imageView 是我的图像的名称,而 box 是 BorderPane 对象。谢谢。

4

1 回答 1

3

请参阅 JavaFX 功能请求RT-21337 添加 ImageViewPane 和 MediaViewPane 控件,其中包含示例实现的代码附件,该示例ImageViewPane实现会将ImageView其包含的大小调整为该区域可用的区域。要获得所需的行为,您可能还需要在 上实现computeMinWidthcomputeMinHeight以便ImageViewPane它们返回零而不是图像的最小大小。


现在图像越过了我的网格

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

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

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

  1. 在中心节点上手动设置一个剪辑,以防止它溢出边界。
  2. ImageView在上面链接的ImageViewPane示例中动态调整大小。
  3. ImageView放在ScrollPane中。
  4. 使用css -fx-background-image 属性来显示和动态调整图像大小,而不是使用ImageView.
  5. 在设置边框内容之前先设置边框的中心,这样它将在边框内容下方呈现。
  6. 当节点大于可用显示区域时,使用不与节点重叠的边框窗格(例如 HBoxes、VBoxes 等)不同的构造。

我试过这个:imageView.fitWidthProperty().bind(box.widthProperty());

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

于 2013-04-11T18:04:50.377 回答