使用JavaFX更新TilePane中的ImageView(简单参考问题?)

时间:2019-04-01 18:14:10

标签: java android arrays javafx reference

当前,我正在尝试更新TilePane的每个Tile中的ImageView。

对所有方法可用的类顶部变量:ImageView imgArray[] = new ImageView[20];

创建原始的TilePane:

public TilePane createTilePane() {
    TilePane tile = new TilePane();
    tile.setPrefColumns(5);
    for (int i = 0; i < 20; i++) {
        tile.getChildren().add(this.createImageView("https://media.forgecdn.net/avatars/141/115/636539774401917932.jpeg", i));
    } //for
    return tile;
} //createTilePane()

public ImageView createImageView(String url, int x) {
    Image image = new Image(url);

    imgArray[x] = new ImageView();

    imgArray[x].setImage(image);
    imgArray[x].setFitWidth(100.0);
    imgArray[x].setFitHeight(100.0);
    imgArray[x].setImage(image);

    return imgArray[x];
} //createImageView()

问题是,每当我想更改无法在图块内的图像时。例如,我希望能够执行以下操作:this.createImageView("url", 2);更改TilePane中的Tile。

我可以做到这一点而没有错误,但是图像没有改变。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

createImageView不会更新场景。它只是创建一个新的ImageView并更新包含数据的数组。如果要更改显示,则需要更新场景。在这种情况下,执行此操作的最佳方法是修改image的{​​{1}}属性。

请注意,我已经稍微重写了您的代码以重用ImageView实例。 Image已重命名为createImageView,因为这似乎对我的工作而言是一个更好的名字:

setImage