【问题标题】:JavaFx image resizingJavaFx 图像大小调整
【发布时间】:2013-04-11 14:22:49
【问题描述】:

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

我试过了:

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

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

【问题讨论】:

    标签: image javafx


    【解决方案1】:

    请参阅 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. 在设置边框内容之前先设置边框的中心,这样它将在边框内容下方呈现。
    6. 使用与边框窗格不同的构造(例如 HBoxes、VBoxes 等),当节点大于可用显示区域时,它们不会重叠其节点。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-24
      • 1970-01-01
      • 2014-12-11
      • 2015-03-09
      • 1970-01-01
      • 2010-11-20
      相关资源
      最近更新 更多