JavaFX Image not showing in stage(JavaFX图像未在舞台上显示)
问题描述
我试了好几次,试了几种方法,但是我不能在舞台上如愿地展示我的形象。我认为这可能与java查找资源的路径有关,但我不确定,因为我刚刚开始使用可视化库(在本例中是JavaFX)。以下是我的目录结构:
MyProject
|_assets
| |_img
| |_myImage.jpg
|
|_some
|_other
|_folders
|
|_src
|_ve
|_org
|_project
|_MyProject.java
|_StratPage.fxml
|_StartPageController.java
我需要检索myImage.jpg
才能呈现,我已经尝试了以下方法:
1)纯fxml方法:
2)同时使用fxml和java。使用<ImageView id="logo" fx:id="logo" fitHeight="99.0" fitWidth="99.0" layoutX="14.0" layoutY="18.0" pickOnBounds="true" preserveRatio="true"> <image> <Image url="@../../../../assets/img/myImage.jpg" /> </image> </ImageView>
fx:id="logo"
声明ImageView
元素,并注入来自StartPageController.java
的图像,如下所示:
public class StartPageController implements Initializable {
@FXML
private ImageView logo;
@Override
public void initialize(URL url, ResourceBundle rb) {
this.logo = new ImageView("file:../../../../assets/img/myImage.jpg");
}
}
这两种方法都不会产生任何异常,我只是不显示图像。我不知道该怎么办。我将非常感谢您的帮助。
更新:
第一个
我尝试放弃建议的目录结构,并将图像文件放在StartPageController.java
的同一文件夹中。通过执行
logo = new ImageView(new Image(getClass().getResourceAsStream("myImage.jpg")))
我没有收到任何异常,但是图像没有呈现,这表明它不是关于查找资源,而是关于呈现图像。会不会是因为没有图书馆?我使用的是Windows8环境,使用的是NetBeans 8.0。再次感谢您的回答。
第二个
我刚刚在NetBeans的项目属性中停用了应用程序的打包和分发。现在图像渲染正确,但我认为问题没有解决,因为当我需要分发软件时,它会重新出现。请帮帮忙!:)
推荐答案
我犯了与您相同的错误。因此,为了更正它,将我的图像放在与我的项目的"src"级别相同的Resources文件夹中。这是我的代码,它起作用了。
public void showImage() {
try {
Image image = new Image("resources/img/akonolingaMap.jpg");
imageView.setImage(image);
imageView.setCache(true);
} catch (Exception e) {
printStackTrace();
}
}
这篇关于JavaFX图像未在舞台上显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:JavaFX图像未在舞台上显示
基础教程推荐
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01