本文介紹了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方法:
<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。使用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圖像未在舞臺上顯示的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,