2016-09-14 7 views
-1

編集:NPEエラーが何であるかを理解しており、コードのどの部分がそれを生成していたのか分かりませんでした。非常に単純なコードでmouseClickedを使用するとNullPointerExceptionが発生する

私は非常にJavaに新しいですし、ここで多くのコーディングが私の頭上を飛んでいます。
私は、キャンバスをクリックするとスティックの図形がジャンプする単純なプログラムを実装しようとしていましたが、キャンバスをクリックしようとするとNullPointerExceptionがスローされていました。

以下に使用する機能と実装が最適ではないことを十分に理解していますが、私は拾った非常に基本的なものを適用しようとしています。どのように一般的な実装を改善するためのアドバイスを取る私は本当に後には、現在のエラーを解決する方法です、ありがとう!

import comp102x.Canvas; 
import comp102x.ColorImage; 
import java.awt.event.MouseListener; 
import java.awt.event.MouseEvent; 

public class JumpMan implements MouseListener { 
    private Canvas canvas; 
    public ColorImage jumpMan; 

    public JumpMan() 
    { 
     canvas = new Canvas(); 
     canvas.addMouseListener(this); 
     ColorImage jumpMan = new ColorImage("jumpmanimg.png"); 
     canvas.add(jumpMan,200,200); 
    } 


    public void mouseClicked(MouseEvent click) 
    { 
     for (int i=1; i<=50; i++) 
     { 
      jumpMan.setY(jumpMan.getY()+1); 
      pause(2); 
     } 
     for (int i=50; i>=0; i--) 
     { 
      jumpMan.setY(jumpMan.getY()-1); 
      pause(2); 
     } 
    } 

    private void pause(int sleepTime) { 
     try { 
      Thread.sleep(sleepTime); 
     } catch (InterruptedException e) { 
      System.exit(-1); 
     } 
     } 
public void mousePressed(MouseEvent click){} 
public void mouseReleased(MouseEvent click){} 
public void mouseEntered(MouseEvent click){} 
public void mouseExited(MouseEvent click){} 
} 
+5

可能な重複http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) –

+0

これはとにかく動作しません。マウスクリックイベントは、イベント処理スレッドで処理されます。その間、画面は再描画されず、そのような(再描画イベント)。つまり、睡眠でアニメーション化することはできません。さらにAWTは最も古いGUIです。 Swingはまだ活動していますが、JavaFXがあります。スイングの例を試してください –

+0

ああ、アドバイスをいただきありがとうございます。私はSaidulの修正を使用した後にあなたが意味するものを見ることができます - 人は1ピクセルアップしますが、そこにとどまります。私が従っているオンラインのedXコースはAWTを使うように思えますが、これは実際には古くなってしまったのです。 – Jonathan

答えて

0
これにあなたのコードを変更

- [?何NullPointerExceptionがある、と私はそれをどのように修正すればよい](の

private Canvas canvas; 
public ColorImage jumpMan; 

public JumpMan() 
{ 
    canvas = new Canvas(); 
    canvas.addMouseListener(this); 
    jumpMan = new ColorImage("jumpmanimg.png"); 
    canvas.add(jumpMan,200,200); 
} 

今、それはOKになります....

関連する問題