• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アプレットが開始しないエラーについて)

アプレットが開始しないエラーについて

このQ&Aのポイント
  • Javaで「1」のキーを押すと、現在表示されている画像が変わるアプレットを作成しました。
  • しかし、NullPointerExceptionが発生しており、代入ミスの可能性があると思っています。
  • どなたか分かる方ご教授お願いします。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

原因は、1つには、アプレットがinit()される前に、getDocumentBase()しようとしているところだと思います。 つまり、Gazouのコンストラクタの段階では、getDocumentBaseは使えないということ。 2つには、アプレットはそれ自体起動されるアプリプログラムなので、2つおいても、起動したアプレット(ImageView )しか使えないということだと思います。 一応、元のソースを使って、以下のようにすると動くと思いますが、 Gazouを別のクラスにする理由はないような気がします。 単にImageViewの中で保持すればいいのでは? ------------------------------------------------------------ import java.applet.*; import java.awt.*; import java.awt.event.*; import java.lang.String; class Gazou extends Applet { private Image pic[] = new Image[3]; private int stat,stat2; private char pushkey; public void set(String name1, String name2, String name3, char c1, Applet ap) { this.stat=0; this.pic[0] = ap.getImage(ap.getDocumentBase(),name1); this.pic[1] = ap.getImage(ap.getDocumentBase(),name2); this.pic[2] = ap.getImage(ap.getDocumentBase(),name3); this.pushkey = c1; } public Image GetPicture(char n) { if(pushkey == n) { if(this.stat == 0) this.stat = 1; this.stat2=0; if(this.stat == 1) this.stat = 2; this.stat2=1; if(this.stat == 2) this.stat = -1; this.stat2=2; } return this.pic[this.stat2]; } } /* <applet code="ImageView.class" width="497" height="600"></applet> */ public class ImageView extends Applet implements KeyListener { char flg; Gazou data = new Gazou(); public void init() { data.set("01.JPG","02.JPG","03.JPG",'1', this); addKeyListener(this); } public void paint(Graphics g) { if(flg == '1') g.drawImage(data.GetPicture(flg),0,0,this); } public void keyPressed(KeyEvent e) { flg = e.getKeyChar(); repaint(); } public void keyReleased(KeyEvent e){} public void keyTyped(KeyEvent e){} }

koenzaimuq10
質問者

お礼

ありがとうございました。 大変参考になりました。