尝试在控制器 class (javafx) 中更改图像 (FXML) 的 url

Trying to change url of image(FXML) in controller class (javafx)

如何使用我的控制器更改 FXML 文件中标记中的 url。

图像嵌套在窗格 > childeren > Imageview > image 见图

我想要的

我想遍历 imagevies 以检查坐标并使用正确的坐标更改 url。

这是我的循环

for (int i=0; i < 54; i++) {
    if (objectsPane.getChildren().get(i).getLayoutX() == village.getX() && objectsPane.getChildren().get(i).getLayoutY() == village.getY()) {
        objectsPane.getChildren().get(i). // Setting the url
    }

}

如何实现?

首先您需要进行类型转换,因为 objectsPane.getChildren().get(i) 为您提供类型 NodeImageView。然后你可以用新的 url 创建一个新的图像。正如 James 评论的那样,仅仅更改 url 是不可能的。最后用新图像替换旧图像。您的代码可能看起来像这样:

for (int i = 0; i < 54; i++) {
    if (objectsPane.getChildren().get(i).getLayoutX() == village.getX() && objectsPane.getChildren().get(i).getLayoutY() == village.getY()) {

        // Type cast from Node to ImageView:
        ImageView imageView = (ImageView) objectsPane.getChildren().get(i);

        // Create new image with new url:
        Image image = new Image(getClass().getResourceAsStream("/assets/img/gameobjects/new-image.png"));

        // Replace the old with the new image:
        imageView.setImage(image);

        // Or alternatively as a one-liner:
        //((ImageView) objectsPane.getChildren().get(i)).setImage(new Image(getClass().getResourceAsStream("/assets/img/gameobjects/new-image.png")));
    }
}