Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 >  掲示板 >  掲示板(アイコンの画像を読み込む)
閲覧数:885
掲示板(アイコンの画像を読み込む)
名前
匿名
題名 アイコンの画像を読み込む
質問内容

質問を評価する
(0ポイント)
早速質問します。
 Icon ic = new ImageIcon(getImage(getDocumentBase(), "car.gif"));

アイコンの画像を同じディレクトリ内に保存してあります。

画像が表示されていなかった。
確認したところ、
¥src\作業しているフォルダ\car.gif

同様
¥bin\作業しているフォルダ\car.gif

よろしくお願いします。
質問日時 2013-04-11 12:00:31
名前
匿名
回答内容

回答を評価する
(0ポイント)
どんだけ質問繰り返すんだよ。

とりあえず、開発の基礎。
・デバッグ(ブレークポイント)orログで引数を確認

・出力エラーを確認。
・エラー原因を考える。
・ぐぐる。

で、分かんなかったら聞く。
どの言語でも一緒。

ImageIconにどんな値が受け渡されているか、確認するのが先じゃない?
普通に考えて相対パスが合ってないから取れない。
回答日時 2013-04-11 12:52:10
名前
匿名
回答内容

回答を評価する
(0ポイント)
手元にないから試してないけど、getDocumentBase()ってそ
ういう使い方するんだっけ?
getCodeBase()じゃなかったっけ?
つうかgetResourse()使ったような気がするな。
回答日時 2013-04-11 16:04:48
名前
匿名
回答内容

回答を評価する
(0ポイント)
質問者
デバッグ(ブレークポイント)して、
次の結果です。
ic    ImageIcon  (id=46)    
    accessibleContext    null    
    description    null    
    filename    null    
    height    -1    
読んでないみたい

もう一度確認
実行ファイル
Object名/package名/Sample8.java
画像ファイル
Object名/bin/package名/car.gif

よろしくおねがいします。
回答日時 2013-04-11 16:55:00
名前
匿名
回答内容

回答を評価する
(0ポイント)
補足
ソースが次の通り
package 第4章;
import java.awt.*;
import javax.swing.*;

public class Sample8 extends JApplet
{
   private JLabel[] lb = new JLabel[3];
   private Icon ic;

   public void init()
   {
      //コンポーネントの作成
      for(int i=0; i<lb.length; i++){ 
         lb[i] = new JLabel("This is a Car.");
      }
      ic = new ImageIcon(getImage(getDocumentBase(), "bin/第4章/car.gif"));

      //コンポーネントの設定
      lb[0].setIcon(ic);
      lb[1].setIcon(ic);
      lb[2].setIcon(ic);

      lb[0].setFont(new Font("SansSerif", Font.BOLD, 12));
      lb[1].setFont(new Font("Helvetica", Font.BOLD, 14));
      lb[2].setFont(new Font("Century", Font.BOLD, 16));

      //コンテナの設定
      setLayout(new GridLayout(3, 1)); 

      //コンテナへの追加
      for(int i=0; i<lb.length; i++){ 
         add(lb[i]);
      }
   }
}
回答日時 2013-04-11 17:00:36
名前
匿名
回答内容

回答を評価する
(0ポイント)
まず、取れていないなら更にその先のクラスを確認。

String s = getDocumentBase().getPath();
ic = new ImageIcon(getImage(getDocumentBase(), "bin/第4章/car.gif"));

この「s」でどこのローカルパスが格納されているか確認。
このパスと画像ファイルの相対パス部を繋げて、合ってないから取れないと思われる。

でもアプレットって、こんな(getDocumentBase())取り方するのか・・。
URLクラスで返すっておかしいと思う。
回答日時 2013-04-11 18:05:31
名前
匿名
回答内容

回答を評価する
(0ポイント)
次の通りです。
/C:/eclipse-SDK-4.2.2-win32/workspace/Sample_TaCD/bin/%e7%ac%ac%ef%bc%94%e7%ab%a0.Sample81365753850433.html

但し、
/%e7%ac%ac%ef%bc%94%e7%ab%a0.Sample81365753850433.html
この部分がどこから出ているのでしょうか

.../binの前が合ってますが、
.../binの以後がおかしくなっています。

実際のpathは
。。。/bin/第4章/car.gif

よろしくお願いします
回答日時 2013-04-12 17:43:24
名前
匿名
回答内容

回答を評価する
(0ポイント)
。。。/bin/第4章/car.gif
次に変えると
/第4章/car.gif
正常に表示されました

みなさんのアドバイス
ありがとうございました。
回答日時 2013-04-12 17:49:57

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道