[英]JavaFX Image not showing in stage
我已經嘗試了很多次和幾種方法,但我不能讓我的形象在舞台上隨心所欲地展現出來。 我認為這可能與 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")))
我沒有得到任何異常,但圖像沒有渲染,這表明我不是在尋找資源,而是渲染圖像。 可能是缺少任何圖書館嗎? 我在 Windows 8 環境中,使用 Netbeans 8.0。 再次感謝您的回答。
我剛剛在 Netbeans 的項目屬性中停用了打包和分發應用程序。 現在圖像渲染正確,但我認為問題沒有解決,因為當我需要分發軟件時,它會重新出現。 請,仍然需要幫助! :)
我檢查了自己項目中的代碼,它適用於下面的代碼片段。 我已將其調整為您的示例
this.logo = new ImageView(new Image(getClass().getResourceAsStream("/assets/img/myImage.jpg")));
我和你有同樣的錯誤。 因此,為了糾正它,將我的圖像放在與我的項目的“src”相同級別的資源文件夾中。 這是我的代碼,它有效。
public void showImage() {
try {
Image image = new Image("resources/img/akonolingaMap.jpg");
imageView.setImage(image);
imageView.setCache(true);
} catch (Exception e) {
printStackTrace();
}
}
如果你使用 Intellij 作為你的主編輯器,那么你可以將你的文件夾標記為“Resources”或者只是打開“Project Structure”->“Modules”->然后將你的圖像文件夾標記為“Resources”
希望這會幫助你。
在 java 應用程序中,文件系統File和資源之間存在區別(在類路徑上,在 .jar 中)。
如果圖像是應用程序的一部分,並且是固定的、只讀的,如您的相對路徑所示,請使用資源。
但是,圖像必須在罐子內。
也許:
/src/assets/img/myImage.jpg
或使 /assets 也成為頂級源目錄。
然后/img/myImage.jpg
(或在第一種情況下/assets/img/myImage.jpg
)
以編程方式不使用 File 而是使用 URL getClass().getResource("/img/myImage.jpg")
或getResourceAsStream
。
這個問題可以通過將圖標/圖片所在位置的文件夾名稱更改為“資源”來解決。 它必須在您當前的 src 文件夾中,這對我來說很好用(我遇到了同樣的問題)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.