1

Java で別のフォルダにある画像にアクセスするにはどうすればよいですか? 私は一連の写真を持っていますが、それらはユーザーの入力に基づいて変化します。これxが目的です。

picture.setIcon(new ImageIcon("\\resources\\icons\\pictures\\"+x+".png"));

画像は (.class ファイルから) resources/icons/pictures にありますが、上記のコードは機能しません。の値はx正常に機能するため問題ありません。写真の呼び方は正しいですか?

4

3 に答える 3

2

写真の呼び方は正しいですか?

おそらくそうではありません。それらが (埋め込まれた) アプリケーション リソースである場合、それらは通常、Jar にあり、(パスに相当するものを期待する) のStringベース コンストラクターを介して使用できません。ImageIconStringFile

埋め込みリソースの場合は、 でアクセスしますURL

URL urlToImg = this.getClass().
    getResource("/resources/icons/pictures/"+x+".png");
picture.setIcon(new ImageIcon(urlToImg));
于 2012-05-17T23:20:03.623 に答える
0

私が信じているバックスラッシュではなく、フォワードスラッシュを使用する必要があります。

new ImageIcon("/resources/icons/pictures/"+x+".png")

これは、リソースファイルパスを示す標準のJavaクロスプラットフォームの方法です。それはまだWindowsで動作します-Javaランタイムライブラリがあなたのために翻訳を処理します。

于 2012-05-17T05:52:30.780 に答える
0

画像は (.class ファイルから) resources/icons/pictures にあります。

それは問題だ。システムは、クラス ファイルがどこにあるかではなく、どこからプログラムを呼び出したかに関心があります。

コマンドラインでリソースフォルダーを指定し、

java -jar myJar.jar C:\\home\\of\\the\\images 

またはプロパティ経由

java -jar myJar.jar -DImageHome=/foo/bar/images 

またはプロパティ ファイルからが最も柔軟です。

画像を jar に入れたい場合は、Andrew の提案 getClass ().getRessource ("..."); を使用してください。

ところで:スラッシュは移植可能であることは確かです。バックスラッシュは、そうではありません。

于 2012-05-17T23:35:54.503 に答える