当前位置: 首页 > 知识库问答 >
问题:

带有背景加载的图像视图中的Javafx中心图像

欧照
2023-03-14

我想在ImageView中将图像居中。ImageViews用于列表中图片的缩略图,我使用了宽度和高度为90的固定视口,使它看起来更干净。这些图片使用背景加载,所以我不知道图片放入ImageView时的尺寸。当然,我不想拉伸(或裁剪)图像。我在加载图像时使用preserveRatio。有什么方法可以让图像居中,而不是左上角?图像的最长边总是90度。

共有1个答案

童琪
2023-03-14

由于代码太长,无法注释,因此如下所示:

    Image image = new Image(pictureURL, 90, 90, true, true, true)

    ImageView imgView = new ImageView(image);        
    VBox imageSpacingVBox = new VBox();

    Pane spaceAbove = new Pane();
    spaceAbove.setMinHeight(0);
    spaceAbove.setPrefHeight(45);

    Pane spaceBelow = new Pane();
    spaceBelow.setMinHeight(0);
    spaceBelow.setPrefHeight(45);

    imageSpacingVBox.setMaxHeight(90);
    imageSpacingVBox.setPrefHeight(90);
    imageSpacingVBox.setMinHeight(90);

    imageSpacingVBox.setMaxWidth(90);
    imageSpacingVBox.setPrefWidth(90);
    imageSpacingVBox.setMinWidth(90);

    imageSpacingVBox.getChildren().addAll(spaceAbove, imgView, spaceBelow);

如果有人有更容易、更优雅的解决方案,我很想听听。

 类似资料:
  • 我正在尝试在javaFX场景中加载背景图像。我在这里找到的答案不起作用。窗口打开,但它是空白的(没有图像)。

  • 基本上,我有一个方法可以将Image从数据库加载到ImageView中,还有第二个方法可以更改图像,我成功地运行了这两个方法,没有出现异常,但是在change eImage()方法中的setImage之后,我需要更新什么以及如何(场景、阶段)是可能的。我知道在javafx中没有像swings中的repaint()这样的方法,那么我该如何处理呢?

  • 我有一个简单的LineChart,按下按钮就会在一个新窗口中打开。此LineChart使用存储在硬盘上的图像作为背景。如果关闭提示LineChart的窗口,更改(或删除)图像文件并重新打开窗口,则会再次加载旧图像。我在场景构建器和代码中禁用了LineChart的缓存,但这没有帮助。 下面是我用于测试的LineChart-Controller的一个简单代码片段: 谢了! ----更新----目前我使

  • 下面是我的代码: 只是一个加载图像的文件。 我得到以下错误: 以下是完整的代码:

  • 简而言之;有没有办法取消/清除JavaFX图像的背景加载? 在我的代码中,我加载了一堆图像。出于性能原因,在后台使用 来自Images类。 问题是,有时,用户交互会导致程序在加载之前更新图像列表(而不需要之前的图像)。在这一点上,我想取消以前的后台加载。现在,它仍然加载以前的图像,导致实际需要的图像加载时间更长。 请看下面的例子。当我在旧的源完成处理之前得到一个新的源流时,内容开始显示图像需要更长

  • 我是一个新的编码,我正在尝试设置一个图像作为我的CSS页面的背景。我可以让背景改变颜色,但当我尝试使用一个实际的图像,什么都不加载。 以下是我的HTML: 以下是我的CSS: 我做错了什么?