试图改变控制器类中image(FXML)的url(javafx)

问题描述 投票:0回答:1

如何改变我的控制器在FXML文件中的标签中的url。

图片嵌套在pane > childeren > Imageview > 图片见图。

我想要什么

我想循环检查imageevies的坐标,然后用正确的坐标改变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
    }

}

如何实现这个目标?

java for-loop javafx fxml
1个回答
1
投票

首先,你需要做一个类型铸造,因为 objectsPane.getChildren().get(i) 给你 ImageView 属于 Node. 然后你可以用新的网址创建一个新的图片。正如James评论的那样,不可能只改变网址。最后,你用新的图片替换旧的图片。你的代码就可以像这样。

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")));
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.