本文介紹了JavaFX圖像未在舞臺(tái)上顯示的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我試了好幾次,試了幾種方法,但是我不能在舞臺(tái)上如愿地展示我的形象。我認(rèn)為這可能與java查找資源的路徑有關(guān),但我不確定,因?yàn)槲覄倓傞_始使用可視化庫(在本例中是JavaFX)。以下是我的目錄結(jié)構(gòu):
MyProject
|_assets
| |_img
| |_myImage.jpg
|
|_some
|_other
|_folders
|
|_src
|_ve
|_org
|_project
|_MyProject.java
|_StratPage.fxml
|_StartPageController.java
我需要檢索myImage.jpg
才能呈現(xiàn),我已經(jīng)嘗試了以下方法:
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)同時(shí)使用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");
}
}
這兩種方法都不會(huì)產(chǎn)生任何異常,我只是不顯示圖像。我不知道該怎么辦。我將非常感謝您的幫助。
更新:
第一個(gè)
我嘗試放棄建議的目錄結(jié)構(gòu),并將圖像文件放在StartPageController.java
的同一文件夾中。通過執(zhí)行
logo = new ImageView(new Image(getClass().getResourceAsStream("myImage.jpg")))
我沒有收到任何異常,但是圖像沒有呈現(xiàn),這表明它不是關(guān)于查找資源,而是關(guān)于呈現(xiàn)圖像。會(huì)不會(huì)是因?yàn)闆]有圖書館?我使用的是Windows8環(huán)境,使用的是NetBeans 8.0。再次感謝您的回答。
第二個(gè)
我剛剛在NetBeans的項(xiàng)目屬性中停用了應(yīng)用程序的打包和分發(fā)。現(xiàn)在圖像渲染正確,但我認(rèn)為問題沒有解決,因?yàn)楫?dāng)我需要分發(fā)軟件時(shí),它會(huì)重新出現(xiàn)。請(qǐng)幫幫忙!:)
推薦答案
我犯了與您相同的錯(cuò)誤。因此,為了更正它,將我的圖像放在與我的項(xiàng)目的”src”級(jí)別相同的Resources文件夾中。這是我的代碼,它起作用了。
public void showImage() {
try {
Image image = new Image("resources/img/akonolingaMap.jpg");
imageView.setImage(image);
imageView.setCache(true);
} catch (Exception e) {
printStackTrace();
}
}
這篇關(guān)于JavaFX圖像未在舞臺(tái)上顯示的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,