質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

2回答

4685閲覧

JLabelを使用しての画像の表示+クラスパスについて

sobue

総合スコア329

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2016/06/18 13:35

編集2016/06/19 13:27

画像の置いてある場所
ビルド

java

1package adventure; 2 3import java.awt.event.KeyEvent; 4import java.awt.event.KeyListener; 5 6import javax.swing.JFrame; 7 8 9public class MainFram extends JFrame implements KeyListener{ 10 public MainFram() { 11 // TODO 自動生成されたコンストラクター・スタブ 12 13 MainMap mainMap = new MainMap(); 14 addKeyListener(this); 15 add(mainMap); 16 17 pack(); 18 19 } 20 21 public static void main(String[] args) { 22 // TODO 自動生成されたメソッド・スタブ 23 MainFram mainFram = new MainFram(); 24 mainFram.setVisible(true); 25 26 } 27 28 @Override 29 public void keyTyped(KeyEvent e) { 30 // TODO 自動生成されたメソッド・スタブ 31 System.out.println(KeyEvent.VK_UP); 32 } 33 34 @Override 35 public void keyPressed(KeyEvent e) { 36 // TODO 自動生成されたメソッド・スタブ 37 38 } 39 40 @Override 41 public void keyReleased(KeyEvent e) { 42 // TODO 自動生成されたメソッド・スタブ 43 44 } 45 46} 47

java

1 2package adventure; 3 4import javax.swing.ImageIcon; 5import javax.swing.JLabel; 6import javax.swing.JPanel; 7 8import com.sun.xml.internal.ws.org.objectweb.asm.Label; 9 10public class MainMap extends JPanel { 11 ImageIcon icon = new ImageIcon("/Users/naoya/ダウンロード/____.png"); 12 JLabel label = new JLabel(icon); 13 14 public MainMap() { 15 // TODO 自動生成されたコンストラクター・スタブ 16 17 add(label); 18 } 19} 20

ImageIcon icon = new ImageIcon("/Users/naoya/ダウンロード/____.png");の部分にフルパスを入れてみたのですがで表示できませんでした。
他のHPを参考にしましたがどこに画像が置いてあるかが書いてありません。
どこに置いたら確実に表示できるのでしょうか?
アプリとして完成させる予定なので今の状態だと他のパソコンではうまく画像が表示されないですよね?
配布した時にうまく画像が表示される場所も教えてください。参考にしたHP

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

map1.pngという画像ファイルを表示するとしたら、
その画像ファイルをMainMapクラスと同じパッケージに入れて、
下記のようにして利用します。

lang

1ImageIcon icon = new ImageIcon(getClass().getResource("map1.png")); 2JLabel label = new JLabel(icon);

配布する際のJarファイルに含めるときも、classファイルと同じ場所に置くようにします。

クラスファイルと同じ場所でなく、例えば画像を/imagesの下にまとめた場合は、
パスの部分を/images/map1.pngのようにします。

投稿2016/06/18 14:33

argius

総合スコア9388

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sobue

2016/06/19 01:08 編集

adventurpackageと同じフォルダの中ということですよね?入れてやってみたのですがエラーになってしまいました。 Exception in thread "main" java.lang.NullPointerException at javax.swing.ImageIcon.<init>(ImageIcon.java:217) at adventure.MainMap.<init>(MainMap.java:10) at adventure.MainFram.<init>(MainFram.java:13) at adventure.MainFram.main(MainFram.java:23) package adventure; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JPanel; import com.sun.xml.internal.ws.org.objectweb.asm.Label; public class MainMap extends JPanel { ImageIcon icon = new ImageIcon(getClass().getResource("____.png")); JLabel label = new JLabel(icon); public MainMap() { // TODO 自動生成されたコンストラクター・スタブ add(label); } } と変更しました。 画像の場所もadventureのフォルダの中に入れました
argius

2016/06/19 01:03

どのように修正したのかを詳しく教えて下さい。 どういうエラーが出ているのかも教えて下さい。
argius

2016/06/19 11:47

画像はクラスパスのフォルダーに入れる必要があります。 どのような開発環境をお使いですか?
argius

2016/06/19 11:48

一度書いたコメント欄を修正した場合は、通知がされないようです。
sobue

2016/06/19 12:55

Mac eclipseです。クラスパスフォルダですか?
sobue

2016/06/19 12:57

更に、コメントにコメントした場合も通知ないみたいですね。それでは返事がどうしても遅くなるので質問編集のところに書くしかないのだろうか?
argius

2016/06/19 13:04

Eclipseなら、ソースフォルダーのJavaファイルと同じところ、 この場合だとadventureパッケージに画像を置けば良いです。 そうすれば、プロジェクトの下のbin/adventureフォルダーの下に画像がコピーされます。 されてなければ、再度ビルドを行えばコピーされるはずです。 Eclipseを使わずjavacで直接コンパイルする場合は、手動でコピーする必要があります。 画像ファイル名は実際は____.pngではなくもっと分かりやすいものですか? 念のためファイル名が合っているかもう一度確認してみて下さい。
sobue

2016/06/19 13:06

実際のファイル名だったりします。コピーして使用してますので間違いありません。インターネット上でもらってきたものをそのまま表示しようとしてましたので、そのままのファイル名になってます。
sobue

2016/06/19 13:21

package adventure; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JPanel; public class MainMap extends JPanel { ImageIcon icon = new ImageIcon("____.png"); JLabel label = new JLabel(icon); public MainMap() { // TODO 自動生成されたコンストラクター・スタブ add(label); } } この状態だとエラーなしに起動はしますが、画像の表示はされません。
argius

2016/06/19 13:21

ビルドの件も確認されていますか? 念のために同じようにMac+Eclipseで動作させて確認しているので、これで問題ないはずです。
sobue

2016/06/19 13:26

入ってなかったので手動で画像を入れてみたのですが、ダメでした。
sobue

2016/06/19 13:31

できました。なぜかビルドのショートカットキー(Command + B)を押してもコピーされなかったので直接コピーしに行ったのと、コードを package adventure; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JPanel; public class MainMap extends JPanel { ImageIcon icon = new ImageIcon(getClass().getResource("____.png")); JLabel label = new JLabel(icon); public MainMap() { // TODO 自動生成されたコンストラクター・スタブ add(label); } } にしたらできました。 長々と付き合っていただきありがとうございます。 ビルドできなかったのは・・・・?
argius

2016/06/19 13:36

できましたか。良かったですね。 ビルドで何かおかしなこと(エラーが無いはずなのにエラーとかファイルがコピーされないとか)が起きたら、 メニュー>プロジェクト>「クリーン」をすることで解消することがあります。 new ImageIcon("____.png")とした場合は、 特に設定を変えなければプロジェクトフォルダーの直下の____.pngがあるものと見なされます。 その場合は配布する場合に困るのではと思いましたが、 配布する際にJarに直接入れないで別フォルダーにして、 あとでZIPにまとめて配布するならこれでも良いと思います。
guest

0

ありがとうございます。助かりました。

投稿2016/06/19 22:45

sobue

総合スコア329

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問