2012-01-09 10 views
0

私はこの答えを見てきました:Add image to JAR Java しかし、私はそれがどのように機能するのか分かりませんでした。私はステップバイステップで説明しようとします。初めでJava - ソースからのイメージをロード

私は私のプロジェクトに画像を追加

  • テスト
    • SRC
      • com.test
        • tester.java
        • img.png
    • 画像
      • img.png
    • JREシステム・ライブラリー

私の質問 - 私は私のimg.pngを置く必要がありますか?

は、その後、私はリソース

URL url = tester.class.getResource(PATH); 
    ImageIcon ii = new ImageIcon(url); 

からそれを取得しようと、私は怒鳴るような異なるpathesを試してみた:

  • "画像/ img.png" - それは動作しません。 iiのサイズが間違っています
  • "/images/img.png" - 全く動作しません。

私が間違っていることを教えてください。 あなたにとって難しいことでなければ、ステップバイステップでお願いします。


Guysは、私は大規模な長さのURLを持っている場合、私は画像を見ることができないことに注意を撮影したが、私はCにファイルをコピーする場合:(例)、私はそれを見ることができます。何が起こったか?それはバグですか?ところで、私のURLが含まれています!シンボル。

+2

これは説明できますか?「動作しません。私は間違ったサイズなど? image riteを読み込みますが、正しいサイズで表示できませんか? –

+0

間違ったパスを書き込むと、エラーが発生します。スレッド "main"の例外java.lang.NullPointerException \t at javax.swing.ImageIcon。 (Unknown Source) \t image/img.pngのような正しいパスを書くと、高さ= -1、幅= -1のImageIconが間違っています。だから私は結果を見なかった – Nolesh

+0

画像のサイズではなく、画像のパスで問題が起こっているようです。 –

答えて

5

/images/img.pngは、/で始まる絶対パスです。それは/test/images/img.png

パスimages/img.pngは、あなたがリソースをロードしようとしているからクラスに相対的であるべきであるのでimagesフォルダは、testパッケージであるため、あなたの質問に基づいて、このパスは、存在しません。問題は、「うまくいかない、サイズが間違っているなど」という意味が理解できないことです。あなたはそれについて詳しく述べるべきです。

+1

あなたのリンクはJava 1.4のJavadocを指しています。本当に古くなっています。 –

+0

JavaDocsの最新バージョンにリンクすることをお勧めします。私はあなたの答えをJ2SE 7を指すように編集しました。最新のドキュメントへのリンクを得るためのヒントについては、[ポイント2の利点](http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7090875)を参照してください。 。 (そして、RFEの投票に自由に気をつけてください。これにより、J2SE JavaDocのリンクが過去のものになります。) –

+0

@EliAcherkanが修正されました。 –

2

あなたがすべきである:私は代わりに、私はあなたがドキュメントに相談することをお勧め、ここであなたに積載資源のルールを記述しません

あなたのイメージをイメージフォルダに置きます。

と私は私の問題のために、これらすべての答えを試みたが、それらのどれも働いていない。この

String path = "images/img.png"; 
URL url = tester.class.getResource(path); 
+0

OPは同じことをしていませんか? –

+0

Eclipseからコンパイルすると動作します。しかし、JARファイルにエクスポートすると、うまく動作しません。私はパスをチェックした。それは次のようなものです:/C:/test.jar!/com/test/images/img.png - 私は疑問です! JAR賞賛の後のシンボル! – Nolesh

+0

"jar-xvf test.jar"を使用してjarファイルを解凍したパスです。どうやってそれを手に入れましたか?シンボル? –

0

のようなイメージをロードします。私は友人に尋ね、彼は私の問題に完全に答えました。 Imagesという名前のソースフォルダを作成します(つまり、Eclipseを使用している場合は、プロジェクトを右クリック - > new-> sourceFolder)。あなたが欲しいものを呼んで、私は私の画像と呼んだ。それにいくつかの画像を入れてください。

私はImageIconを与えたJLabelsを持っていました。次のコードを見てください。

ImageIcon BPawn; 
    ImageIcon WPawn; 
    JLabel Label = new JLabel[8][8] //2D array of labels that gives each spot a position. 
    public void setPieces(){ 
     //set up pawns in their respective positions. 
     BPawn = new ImageIcon("Images/BPawn.png", "BPawn"); 
     WPawn = new ImageIcon("Images/WPawn.png", "WPawn"); 
    for(int i=0;i<Label[0].length;i++){ 
     Label[1][i].setIcon(BPawn); 
     Label[6][i].setIcon(WPawn); 
    }//end for 

    }//end setPieces. 

ありsetPiecesで、より多くの()メソッドがあるが、この一見はあなたが実行可能なjarファイルを作成し、画像を表示したいときに、あなたのソースフォルダ内の画像を参照します方法です。

-1

あなたのパスにImage/BPawn.pngを再度使用した場合、 BPawn = new ImageIcon( "{Projectname}/{map}/{image.jpg/png/whatever}");

WPawnについても同じです。

+0

ようこそstackoverflowへ。これは答えではないようですが、別の回答のコメントですので、すぐに削除される可能性があります。 – Marco13

関連する問題