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

时间:2018-11-23 19:16:11

标签: java image javafx imageview

我想在ImageView中居中放置Image。 ImageViews用于列表中图片的缩略图,我使用了固定的视口,其宽度和高度为90,以使其看起来更干净。 图像使用BackgroundLoading,因此在将图像放入ImageView时不知道图像的尺寸。当然,我也不想拉伸(或裁剪)图像。我在加载图像时正在使用preserveRatio。 是否有某种方法可以使图像居中而不是左上方居中?图片的最长边始终为90。

1 个答案:

答案 0 :(得分:0)

由于代码太长,无法注释,因此它是:

    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);

如果有人有一个更简单,更优雅的解决方案,我很想听听。