1. ホーム
  2. java

[解決済み] JavaFXの画像がステージに表示されない

2022-02-14 21:18:39

質問

何度も何度も試してみたのですが、思うように画像がステージに表示されないのです。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");
    }    

}

どちらの方法でも例外は発生せず、ただ画像が表示されないだけです。どうしたらいいのか全くわかりません。ご協力をお願いします。

更新情報

はじめに

ディレクトリ構造案を持つことをあきらめて、画像ファイルを同じフォルダの StartPageController.java . こうすることで

logo = new ImageView(new Image(getClass().getResourceAsStream("myImage.jpg")))

例外は発生していませんが、画像がレンダリングされていません。ライブラリがないのでしょうか?私はWindows 8環境で、Netbeans 8.0を使用しています。ご回答ありがとうございました。

第2回

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();
    }
}