JavaFx图像调整大小

时间:2013-04-11 14:22:50

标签: image javafx

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

我试过了:

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

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

1 个答案:

答案 0 :(得分:2)

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


  

现在图像越过我的网格

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

  

BorderPane默认情况下不会剪切其内容,因此如果孩子的最小尺寸阻止它适合其空间,则儿童的边界可能会超出其自己的范围。

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

  1. 在中心节点上手动设置clip以防止其溢出边框。
  2. 动态调整ImageView的大小,与上面链接的ImageViewPane示例一样。
  3. ImageView放入ScrollPane
  4. 使用css -fx-background-image attributes显示并动态调整图片大小,而不是使用ImageView
  5. 在设置边框内容之前先设置borderpane的中心,这样就会在边框内容下方呈现。
  6. 使用与边框相同的构造(例如HBox,VBox等),当节点大于可用的显示区域时,这些构造不会与节点重叠。
  7.   

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

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