当前,我正在尝试更新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。
我可以做到这一点而没有错误,但是图像没有改变。
有什么想法吗?
答案 0 :(得分:0)
createImageView
不会更新场景。它只是创建一个新的ImageView
并更新包含数据的数组。如果要更改显示,则需要更新场景。在这种情况下,执行此操作的最佳方法是修改image
的{{1}}属性。
请注意,我已经稍微重写了您的代码以重用ImageView
实例。 Image
已重命名为createImageView
,因为这似乎对我的工作而言是一个更好的名字:
setImage