提问人:Jenny 提问时间:12/30/2021 更新时间:12/30/2021 访问量:67
为 JavaFX ImageView 加载图像时的 Java getResourceAsStream NullpointerException
Java getResourceAsStream NullpointerException when loading image for JavaFX ImageView
问:
我有以下项目设置(Maven Project):
而绝对路径: C:\Users\jenny\IdeaProjects\gameapp\client\src\main\resources\images\game\black_market.png
此代码引发 Nullpointerexception:
private void setUpImage(ImageView image){
Platform.runLater(()->{
var url = getClass().getResourceAsStream("images/game/black_market.png");
System.out.println(url.toString());
Image img = new Image(url);
image.setImage(img);
});
}
这可能是因为文件路径不正确,但我真的不知道如何自己修复它。在过去的 2-3 个小时里,我尝试在 Stackoverflow 上研究类似的问题。
在此函数上传递的 ImageView 是对 ImageView 的引用。我的函数应该加载图像并将其放入传递的 ImageView 中。老实说,我实际上不知道这是否有效,因为 Java 是按值传递的。
答:
0赞
Jenny
12/30/2021
#1
为什么 setImage() 不会在 JavaFx 中更改我的 ImgView?
这个问题解决了它。我注意到缺少@FXML注释。添加它们解决了整个问题。
@FXML
private void setUpImage(ImageView image){
Platform.runLater(()->{
Image img = new Image("/images/game/black_market.png");
image.setImage(img);
});
}
评论
1赞
Slaw
12/31/2021
请问你为什么在通话中包装了这个代码?Platform.runLater
0赞
Jenny
1/1/2022
@Slaw 你说得完全正确,代码是多余的,因为我在 GUI 线程/控制器类中。
评论
var url = getClass().getResourceAsStream("/images/game/black_market.png");
/