我尝试了很多次,尝试了很多方法,但都无法让自己的形象在舞台上如我所愿。我认为这可能与java寻找资源的路径有关,但我不确定,因为我刚刚开始使用视觉库(在本例中为JavaFX)。这是我的目录结构:
MyProject
|_assets
| |_img
| |_myImage.jpg
|
|_some
|_other
|_folders
|
|_src
|_ve
|_org
|_project
|_MyProject.java
|_StratPage.fxml
|_StartPageController.java
我需要找回myImage.jpg
要渲染,我尝试了以下操作:
1)纯fxml方法:
<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>
2)同时使用fxml和java。宣布ImageView
元素与fx:id="logo"
,并注入图像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");
}
}
两种方式都不会产生任何异常,我只是不显示图像。我不知道该怎么做。我将衷心感谢您的帮助。
UPDATES:
First
我尝试放弃建议的目录结构,并将图像文件放在同一文件夹中StartPageController.java
。通过做
logo = new ImageView(new Image(getClass().getResourceAsStream("myImage.jpg")))
我没有收到任何异常,但图像没有渲染,这表明我这不是关于查找资源,而是关于渲染图像。可能是缺少任何图书馆吗?我在 Windows 8 环境中,使用 Netbeans 8.0。再次感谢您的回答。
Second
我刚刚在 Netbeans 的项目属性中停用了打包和分发应用程序。现在图像可以正确渲染,但我不认为问题已解决,因为当我需要分发软件时它会重新出现。拜托,仍然需要帮助! :)