2016-09-14 24 views
-1

编辑:我明白什么是NPE错误,我一直在努力寻找我的代码的哪个部分正在生成它。NullPointerException当在非常简单的代码上使用mouseClick时

我对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的修补程序后,我可以看到你的意思 - 该人跳过一个像素,但停留在那里。我所遵循的在线edX课程似乎只使用了AWT,如果它真的过时了,这有点令人沮丧。 – Jonathan

回答

0

你的代码改成这样 -

private Canvas canvas; 
public ColorImage jumpMan; 

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

现在,这将是确定....

相关问题