• ベストアンサー

★Appletで画像読み込み&画像表示★

import java.awt.*; import java.applet.*; public class S1 extends Applet { Image img; public void init() { img=getImage(getCodeBase(),"sample.jpeg"); } public void paint(Graphics g){ g.drawImage(img,50,50,this); } } 以上プログラムでアプレット上に拡張子がjpeg形式のsampleという100*100の画像を表示しようとしています。 クラス名はS1で問題なくエラーもありません。 java関連のサイトでも同じようにして画像が表示できるとされていたのですが、私のパソコンではアプレット上には何も表示されないまま、アプレットのみが起動するという状態になりました。 Eclipse SDKというものを使用していますが、それが原因なのかどうかもわからず困っています。 お手数をお掛けしますが、回答の程よろしくお願いします。

  • Java
  • 回答数2
  • ありがとう数0

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

  • ベストアンサー
noname#94983
noname#94983
回答No.1

そのアプレットは、ちゃんとWebサイトにアップロードし、Webブラウザからアクセスして試してみたのだろうか。それとも、ローカルボリュームにおいてあるのをそのままWebブラウザで見ようとしたのか。 前者で表示されないのであれば、ファイル名とか、あるいはHTMLのタグとかどこかに問題があるのかもしれない。が、後者で表示されないのであれば、それは正常。アプレットにはさまざまな制限があり、ローカルボリュームに置かれた状態でローカルボリュームにあるファイルにはアクセスできない。(ただし、アプレットビューワを使えば表示できる) また、もし作成したアプレットがJarファイルにまとめられているとしたら、これは表示されないのが当たり前。getImageはファイルアクセスをするものであって、Jarのアーカイブ内にあるイメージデータを読み込むことはできないから。 Eclipseを使っているかどうかはこの場合、無関係だろう。多くのJavaプログラマはEclipseを利用しているはずだし、それで何の問題もないはずだから。

puyoer
質問者

補足

なるほど! 私は明らかに後者ですね。 アプレットビューアを使っているのにできないのが謎なんですが。。。 Jarファイルというのがわからないので、それが臭いかもしれません。 一度確認してみます。 ありがとうございます!

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

アプレットビューアーで実行したのでしょうか? パッケージング化していないなら classファイルと同じフォルダーに『sample.jpeg』が無いといけないことになりますよ 実行手順やファイルの置き場所の構成など見直してみましょう プロジェクト   javaファイル   classファイル   Sample.jpeg といった具合でないと画像の取得に失敗するでしょう

puyoer
質問者

補足

javaファイルというのはわたしのでいうところのbinファイルの相当するのかなと思います。(それ以外にプロジェクト内にファイルがないので) そこに原因があるのかもしれませんね。 もうちょっと調べてみます。ありがとうございます。

関連するQ&A

  • さあ、表示だ!ってあれ~?

    import java.awt.*; import java.applet.*; public class S1 extends Applet {       Image img;       public void init()       {             img=getImage(getCodeBase(),"image/sample.jpeg");       }       public void paint(Graphics g){             g.drawImage(img,50,50,this);             g.drawString("Hello!",10, 10);       } } というプログラムでアプレットビューアを呼び出すことに成功! がしかし、Hello!という文字は表示できたものの画像が処理されません。。; 他にもColorやrepaint()を用いて背景に色を設定したり、変えたりすることもできました! でも、何回やっても画像が表示されません。 原因を教えてもらうとありがたいです。 ちなみに、関係のありそうなファイル状況を説明します↓ Dドライブ━プロジェクトファイル┳imageファイル━sample.jpeg                      ┣srcファイル━S1.java                    ┗binファイル┳S1.class                            ┗java.policy.applet

    • ベストアンサー
    • Java
  • appletの画像が表示されない

     画像を表示するappletを作ったんです。  コマンドのappletviewerでは確認出来るんですが、IEでは何故か表示されません。何故なんでしょう?  WINXP/IE6.0.2600です。  以下にコードを記述します。 import java.awt.*; import java.applet.*; public class test extends Applet {  Image img;  public void init() {   img = getImage(getDocumentBase(), "test.PNG");  }  public void paint(Graphics g) {   g.drawImage(img, 10, 10, this);  } }

    • ベストアンサー
    • Java
  • 【Java】画像表示が出来ない!

    Java初心者です。 Eclipseを使って、Javaアプレットでjpeg画像を表示させようとしたのですが、上手くいきません。表示したい画像をインポートして、このようなコードを書きました。 import java.applet.Applet; import java.awt.*; /* <applet code="クラス名.class" width="497" height="600"> <param name="img" value="img/test.jpg"> </applet>*/ public class クラス名 extends Applet { Image img; public void init() { img = getImage(getDocumentBase() , getParameter("/test.jpg")); } public void paint(Graphics g) { g.drawImage(img , 0 , 0 , this); } } Javaアプレットで実行しても、アプレットは真っ白なままです。GIF画像でも試してみましたが、同じく失敗でした。他のJavaアプレットのプログラム(図形を表示したり)は成功したので、私のパソコンのJavaは問題ないと思います。回答よろしくお願いします。

    • ベストアンサー
    • Java
  • ★滑らかな画像切り替え★

    アプレットを用いてスライドショーのようなものを作成しようと考えています。 しかしながら、画像を読み込むまでに時間がかかり、滑らかにつなぎたいのに、コマ送りのようになってしまいます。 できる限り断続的ではなく連続に見えるようにしたいと考えているのですが、良い方法はないでしょうか? 画像に関してはJavaScriptの方が有効だとするサイトが多すぎて悩んでいます。 プログラムを載せておきます。尚、画像はどれも800×600のサイズです。 import java.awt.*; import java.applet.*; import java.awt.event.MouseListener; import java.awt.event.MouseEvent; public class S1 extends Applet implements MouseListener {   Image img;   int Flag=0;   public void init()   {     addMouseListener(this);     setSize(800,600);   }   public void paint(Graphics g){     switch(Flag){     case 0:img=getImage(getCodeBase(),"../image/bg001.jpg"); break;     case 1:img=getImage(getCodeBase(),"../image/bg002.jpg"); break;     default:img=getImage(getCodeBase(),"../image/bg003.jpg"); break;     }     g.drawImage(img,0,0,this);   }   public void mouseClicked(MouseEvent e) {     Flag++;     repaint();   }   public void mouseEntered(MouseEvent e) {}   public void mouseExited(MouseEvent e) {}   public void mousePressed(MouseEvent e) {}   public void mouseReleased(MouseEvent e) {} } 改善点などもあれば是非!

    • ベストアンサー
    • Java
  • 画像を表示させるプログラム

    こんばんわ。 現在、Javaで画像を表示させるアプレットを作っているのですが、画像が表示されません。 書いたソースは以下です。 import java.applet.Applet; import java.awt.*; /* <applet code="Panel.class" width="497" height="600"> </applet> */ public class Panel extends Applet { Image data; public void init() { data = getImage(getDocumentBase(),"2-1.gif"); } public void paint(Graphics g) { g.drawImage(data, 0, 0, data.getWidth(this), data.getHeight(this), this); } } 2-1.gifという画像ファイルを表示させたいと思っています。画像ファイルはソースファイルと同じディレクトリにあります。appletviewerで実行しているのですが画像がさっぱり表示されません。 SDKのバージョンは1.5を使っています。 お手数おかけしますが、ご教授の程よろしくおねがいします。

    • ベストアンサー
    • Java
  • 画像がうまく表示されません

    下のプログラムを実行すると、 最初の読みこみはうまくいくのですが、(一部出なくなる画像がありますが…) 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); } } }

    • ベストアンサー
    • Java
  • NetBeansによる画像の表示

    現在、「やさしいJava」(SOFTBANK Publishing)という解説書のプログラムをNetBeans6.5.1で実行しながら勉強しています。 package sa16_03; import java.applet.Applet; import java.awt.Graphics; import java.awt.Image; public class Applet16_03 extends Applet { Image imgDuke; @Override public void init() { imgDuke = getImage(getDocumentBase(), "DukeWithHelmet.bmp"); } @Override public void paint(Graphics g) { g.drawImage(imgDuke, 30, 40, this); } } 上記のソースはDukeWithHelmet.bmpという画像ファイルを表示させる為のプログラムなのですが、アプレットビューア及びHTMLには何も表示されませんでした。 http://okwave.jp/qa4366603.htmlの回答例に従って、paintメソッド内に g.drawString( getDocumentBase().toString(), 10, 50 ); を付与して再度アプレットビューアを起動したら、 file:/C:/NetBeansProjects/SOFTBANK/Easy/Lesson16/Sample16/build/Applet16_03.html と表示されました。 getDocumentBase()メソッドはアプレットを起動するHTMLファイルの場所をURLで返すので、DukeWithHelmet.bmpもApplet16_03.htmlと同じ場所に置いています。 尚、関係がありそうなファイル構造は以下のようになります。 C:\NetBeansProjects\SOFTBANK\Easy\Lesson16\Sample16 までは一本道で、Sample16以下は ┳build┳classes━sa16_03━Applet16_03.class ┃    ┣DukeWithHelmet.bmp ┃    ┗Applet16_03.html ┗src ━sa16_03━Applet16_03.java というファイル構造になっています。 画像が表示されない原因の回答を是非お教え願います。

    • ベストアンサー
    • Java
  • アプレットに画像が表示されません

     今晩は、java初心者です、宜しくお願いします。  下のようなプログラムを書きましたが、画像がアプレットに表示されません。  画像はeclipseで同じプロジェクト(フォルダ)内に置いています。  文法上のエラーは出ておりません。  原因がわかりません宜しくお願いします。 ============================ public class Test extends Applet { MediaTracker tracker ; Image img ; public void init() {   tracker = new MediaTracker( this ) ; img = getImage( getDocumentBase() , "a.jpg" ) ; tracker.addImage( img , 0 ) ; } public void start() {              try { tracker.waitForAll(); } catch (InterruptedException e) { } } public void paint( )      { Graphics g2 = getGraphics(); g2.drawImage( img , 0 , 0 , 50 , 50 , this ) ; } }

    • ベストアンサー
    • Java
  • javaでエラーを起こす変数の特定

    こんにちは. java初心者です. try~catchでエラー処理を行うことについて質問です. try~catchでは,エラーを起こした変数を特定することは出来ないのでしょうか? 例えばアプレットで画像を表示させる下記のコードについて, img1とimg2の変数を使いますが,img1に読ませるファイルは存在するが img2に読ませるファイルが存在しない場合に,「img2に読み込ませるファイルが存在しません」と表示したいのです. このようにどの変数がエラーを起こしたかを特定することはできますか? ============== import java.awt.*; import java.applet.*; import java.awt.event.*; public class Sample extends Applet{ Image img1, img2; int x=0, y=0; public void init() { System.out.println("init"); try{ img1 = getImage(getClass().getResource("img/sample1.jpg")); img2 = getImage(getClass().getResource("img/sample2.png")); } catch(Exception e){ System.out.println("エラー" + e + "が返されました."); } } public void paint(Graphics g){ g.drawImage(img1, 0, 0, this); g.drawImage(img2, 50, 50, this); } } ============== try{  img1に関する処理 } catch(Exception e){ img1に関するエラー処理 } try{  img2に関する処理 } catch(Exception e){ img2に関するエラー処理 } とやればできそうですが,あまりに冗長なので他に方法があると思うのですが… 自分もまだ勉強しはじめたばかりなので,初歩的な質問で恐縮です. 教本やネットで調べても分からなかったので質問させていただきました. よろしくお願いいたします.

    • ベストアンサー
    • Java
  • 画像表示アプレットプログラムについて

    Javaのプログラムを勉強中です。 javaを理解するために下記のプログラム(zukei.java)を作成しました。 このプログラムを実行(appletviewer zukei.java)すると エラーにはなりませんが、(3)の行により画像("b.jpg")がすぐには表示されません。表示されたWindowにほかのWindowをいったんのせてから動かすと(3)行により画像"b.jpg"が表示されます。 (1)(2)の行は最初からうまく動作して表示されます。 もちろん(3)のappletをthisにするとうまく動作します。 理由がわかりません。 どなたかご教授ください。 プログラム zukei.class *<APPLET CODE="zukei.class" WIDTH=500 HEIGHT=500></APPLET> */ import java.applet.*; import java.awt.Graphics; import java.awt.*; public class zukei extends Applet { Applet applet; Image myimage; int iKai; public zukei(){ applet = this.applet; } public zukei(Applet applet) { this.applet = applet; } public void init(){ iKai = 0; myimage = getImage(getDocumentBase(),"b.jpg"); } public void paint(Graphics g) { kaku(); //(1) g.drawArc(100,150,50,50,0,360); //(2) g.drawImage(myimage,10,300,180,180,applet); //(3) } public void kaku(){ System.out.println("ABC" + iKai++); } }

専門家に質問してみよう