尝试在控制器 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)
为您提供类型 Node
的 ImageView
。然后你可以用新的 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")));
}
}
如何使用我的控制器更改 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)
为您提供类型 Node
的 ImageView
。然后你可以用新的 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")));
}
}