ここから本文です

JAVAの勉強中なのですがJButtonにアイコンを載せたいのですがうまくいきません。

kam********さん

2011/10/2820:50:02

JAVAの勉強中なのですがJButtonにアイコンを載せたいのですがうまくいきません。

package aaa;
import javax.swing.*;
import java.awt.*;
import javax.swing.ImageIcon;
public class Tack extends JFrame{
JButton btn;
ImageIcon ic;
JPanel pa;

Tack(String title){
super(title);
pa= new JPanel();
ic = new ImageIcon("aaa.png");
btn = new JButton("押してね!",ic);
btn.setVerticalTextPosition(AbstractButton.BOTTOM);

pa.add(btn);

add(pa);
setSize(400,400);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}


public static void main(String[] args){
Tack t = new Tack("javaの世界へようこそ");
}

}

記述に誤りはありますか?

補足ちなみにソースコードのファイルが入っているディレクトリ内に画像ファイルは収めているのですが、System.out.println(ic.getImageLoadStatus());で調べてみたところ4が表示されました。

閲覧数:
281
回答数:
2

違反報告

ベストアンサーに選ばれた回答

矢風千恵さん

編集あり2011/10/2821:46:21

自分の環境ではちゃんとアイコンが表示されました。コードに間違いはないと思いますが、aaa.png が見つかっていないからだと思います。ImageIcon はネットワーク越しに画像をロードできるように設計されているので、ロードが失敗してもそのまま実行を続けてしまいます(java の設計ミスだろ!アホか!)。ImageIcon を new したあとで、以下のように

ic = new ImageIcon("aaa.png");
System.out.println(ic.getImageLoadStatus()); // ここを追加
btn = new JButton("押してね!", ic);

してみてください。8が出力されればロード成功ですが、4が出力されていれば失敗です。
カレントディレクトリに aaa.png が存在することを確認してみてください。

--------------------------------------------------
コマンドプロンプトから実行していれば、

----カレントディレクトリ
--------aaa.png
--------aaa
------------Tack.java

という階層になっていなければなりません。
Eclipseなら、

----プロジェクトのディレクトリ
--------aaa.png
--------src
------------aaa
----------------Tack.java


でしょうか。

質問した人からのコメント

2011/10/28 22:07:15

画像を保存する階層を間違えていたようです^^;プロジェクト直下に入れたら解決しました。ご教示ありがとうございました^^

ベストアンサー以外の回答

1〜1件/1件中

xia********さん

編集あり2011/10/2822:01:51

aaa.png ではなくフルパス (C:\から) で指定してみましょう。
なお、クラスファイルと一緒の場所なら
ic = new ImageIcon(getClass().getResource("aaa.png"));
ーーーーーーーーーーーーーーーーーーーーーーーーーーー
誤りはありません。aaa.png が読めないだけだと思います。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる