• ベストアンサー
  • 困ってます

画像がうまく表示されません

  • 質問No.781141
  • 閲覧数85
  • ありがとう数1
  • 回答数2

お礼率 90% (9/10)

下のプログラムを実行すると、
最初の読みこみはうまくいくのですが、(一部出なくなる画像がありますが…)
Internet Explorerの更新ボタンを押した時、
(1)の部分で止まってしまうようで、画像が表示されなくなります。
(ローカルドライブで実行した場合はうまく表示できるのですが、ネットワークで実行した場合にこのようになってしまいます)

import java.applet.Applet;
import java.awt.*;

public class met extends Applet{

Image img[] = new Image[6];
MediaTracker mt;

public void init(){
mt = new MediaTracker(this);

for(int i = 0;i < 6;i++){
img[i] = getImage(getCodeBase(),i+".gif"); mt.addImage(img[i],0);
}

try{
mt.waitForID(0);
}catch(InterruptedException e){}
}
public void paint(Graphics g){
// (1)
if(!mt.checkID(0)){
g.clearRect(0,0,500,500);
g.drawString("読み込み中",200,240);
return;
}
g.setColor(Color.white);
g.fillRect(0,0,500,500);
for(int i = 0;i < 6;i++){
g.drawImage(img[i],i*50,0,this);
}
}
}

質問者が選んだベストアンサー

  • 回答No.2
  • ベストアンサー

ベストアンサー率 58% (347/594)

>最初の読みこみはうまくいくのですが、(一部出なくなる画像がありますが…)

この「一部出なくなる画像がある」
というのが、すでにあやしい。あやしすぎる。
(「全部」でなく「一部」ってのが、ね)

僕の予測では、やはり
「アプレットが画像ファイルを探し出せていない」
なのだが。ファイル名が微妙に違うとか。
(まあ、わからないけどね)

--------
次のように、
エラーチェックするように
init()のコードを変えてみよう!

public void init(){
mt = new MediaTracker(this);

for(int i = 0;i < 6;i++){
img[i] = getImage(getCodeBase(),i+".gif");
mt.addImage(img[i],i);//※第2引数に注目
}

try {
mt.waitForAll();
} catch( InterruptedException e) {}

//※メディアトラッカーによるローディングの際のエラーをチェック
for (int i = 0;i < 6;i++) {
if (mt.isErrorID(i)) {
System.out.println("ファイル番号:"+i+" でエラー発生");
}
}
}

--------------
このようにコードを変えて、
あとはアプレットを実行してみよう!
(※このときのアプレットは「ローカルドライブ上に置いたもの」でもよい)

このとき、InternetExprolerの「Javaコンソール」を開いて、
出力を見てみよう。
なにかエラーが表示されているかな?
--------------
ちなみに…
不具合特定のために「Javaコンソール」を使うのは基本よん。
補足コメント
exprosion

お礼率 90% (9/10)

教えてくださったコードを実行してみました。
ローカルドライブ・ネットワークドライブのどちらでも
エラーは表示されませんでした。
また、更新ボタンを押したときもエラーは表示されませんでした。
今回、問題解決はできませんでしたが、
Javaコンソールの使い方や画像読み込みエラーのことについて分かり、今後も十分に役立てられそうです。
どうもありがとうございました。
投稿日時:2004/02/27 16:03
お礼コメント
exprosion

お礼率 90% (9/10)

ありがとうございます。
早速実行したいのですが、僕は学生で、
今はテスト期間中なので、すぐにすることができません。
テストが終わるのが一週間後なのですが、
テストが終わり次第実行してみたいと思います。
そのときに結果を書きたいと思っていますので、
できれば、一週間後、(2/27か2/28になると思います)
もう一度ここを見てくださればありがたいです。
投稿日時:2004/02/19 15:59

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 58% (347/594)

サーバに画像ファイルは、
ちゃんと置いてあるのかな?
補足コメント
exprosion

お礼率 90% (9/10)

ありがとうございます。
画像ファイルはすべて同じフォルダ内に置いてあります。
クラスファイルや画像など、全く同じものを入れたフォルダごとネットワークドライブからローカルドライブへ移動させて実行するとうまくいきます。

また、最初の読み込みはうまくいっているので、
画像を見つけられない訳ではないと思います。
そして、更新をおこなった際にうまくいかなくなります。
投稿日時:2004/02/18 10:55
関連するQ&A
ページ先頭へ