Thr*_*oze 5 java image javafx-2 fxml javafx-8
我已经尝试了很多次和几种方法,但我无法在舞台上随心所欲地展示自己的形象。我认为这可能与 java 查找资源的路径有关,但我不确定,因为我刚刚开始使用可视化库(在这种情况下为 JavaFX)。这是我的目录结构:
MyProject
|_assets
| |_img
| |_myImage.jpg
|
|_some
|_other
|_folders
|
|_src
|_ve
|_org
|_project
|_MyProject.java
|_StratPage.fxml
|_StartPageController.java
Run Code Online (Sandbox Code Playgroud)
我需要检索myImage.jpg
才能呈现,并且我尝试了以下操作:
1)纯fxml方法:
Run Code Online (Sandbox Code Playgroud)<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");
}
}
Run Code Online (Sandbox Code Playgroud)
两种方式都不会产生任何异常,我只是不显示图像。我不知道该怎么做。我将衷心感谢您的帮助。
我尝试放弃建议的目录结构,并将图像文件放在StartPageController.java
. 通过做
logo = new ImageView(new Image(getClass().getResourceAsStream("myImage.jpg")))
Run Code Online (Sandbox Code Playgroud)
我没有得到任何异常,但图像没有渲染,这表明我不是在寻找资源,而是渲染图像。可能是缺少任何图书馆吗?我在 Windows 8 环境中,使用 Netbeans 8.0。再次感谢您的回答。
我刚刚在 Netbeans 的项目属性中停用了打包和分发应用程序。现在图像渲染正确,但我认为问题没有解决,因为当我需要分发软件时,它会重新出现。请,仍然需要帮助!:)
我检查了自己项目中的代码,它适用于下面的代码片段。我已将其调整为您的示例
this.logo = new ImageView(new Image(getClass().getResourceAsStream("/assets/img/myImage.jpg")));
Run Code Online (Sandbox Code Playgroud)
我和你有同样的错误。因此,为了纠正它,将我的图像放置在项目“src”同一级别的资源文件夹中。这是我的代码,它有效。
public void showImage() {
try {
Image image = new Image("resources/img/akonolingaMap.jpg");
imageView.setImage(image);
imageView.setCache(true);
} catch (Exception e) {
printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22432 次 |
最近记录: |