2017-09-25 11 views
0

画像を追加するには、このコードを使用します。画像がJFrameに表示されない - Javaアプリケーション

JLabel label = new JLabel(new ImageIcon(getClass().getResource("/bin/image.png"))); 

画像の場所は:Application/src/bin/image.png.

問題がある、私のコンピュータのデバッグモードでは、画像を示しています。しかし、クリーンでビルドされたプロジェクトの後、フォルダ(Application/dist)を別のコンピュータにコピーすると、イメージは表示されません。他のコンピュータに画像を表示するにはどうしたらいいですか?

+0

[Javaプロジェクトにリソース(画像、サウンドビットなど)を埋め込むことができる可能性がある] [https://stackoverflow.com/questions/3721706/embedding-resources-images-sound-bits-etc -into-a-java-project-then-use-those) – MC10

+0

Jarファイルを解凍し、リソースが含まれているかどうかを確認します。そうでない場合は、それらを含める方法を理解する必要があります。最初にJarファイルを生成する方法によって決定されます。 – MadProgrammer

答えて

0

getClass()。getResourceは/ src/package内からファイルを返し、ビルド後にビンにバンドルされます。唯一あなたがリソースをコピー(または新しいアイテムトラフソースを追加)したい場合は、プロジェクト構造

エルス

からそれをロードするために/image.pngに

変更あなたは完全修飾リソースのパス名を使用して、それをロードする必要があります代わりにファイルとして。

また、EclipseまたはFatJarを使用してリソースをエクスポートする必要があります。トラフのAntは知らないようにしてください。

私はgetClass()。getResourceでリソースを取得することによっていくつかの問題もありましたが、代わりにgetClass()。getClassLoader()。getResourceを使用しました。

+0

'getClass()。getResource'は現在のクラスパス内のリソースを返します。 'src'ディレクトリで行います。いくつかのIDEは、' src'ディレクトリに格納されているパッケージリソースを削除しますが、 'src'パス要素は削除します。 * "プロジェクト構造からロードするために/image.pngだけを変更する" * - 入力に基づいて、 '/ bin/image.png'と期待していますが、Jarの生成方法についての詳細はありません。 – MadProgrammer

+0

/src /はコンパイルされたクラスを/ bin /に生成し、そのルートは '/'になります –

+0

JVM /ビルドシステムの下では? 'bin 'は、システムがどのように達成されたかに応じて、他のディレクトリ/パッケージと同じディレクトリ/パッケージであり、'/bin/...'や他のディレクトリと同じように簡単です - ほとんどのIDEのデフォルト操作 '/ bin/... 'はより安全な賭けです - OPがJarをパッケージ化する方法の詳細を提供する準備ができていない限り - すべてが単なる仮定と推測です – MadProgrammer