【问题标题】:NullPointerException when using mouseClicked on very simple code在非常简单的代码上使用 mouseClicked 时出现 NullPointerException
【发布时间】:2017-01-22 03:29:54
【问题描述】:

编辑:我了解 NPE 错误是什么,我一直在努力寻找我的代码的哪一部分产生了它。

我对 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){} 
}

【问题讨论】:

  • 这无论如何都行不通。鼠标点击事件在事件处理线程上处理。在此期间,屏幕不会重绘等(重绘事件)。这意味着用睡眠制作动画是不可行的。此外,AWT 是最古老的 GUI。然后是 Swing,它仍然处于活动状态,同时还有 JavaFX。尝试摇摆示例。
  • 啊,谢谢你的建议,在使用 Saidul 的修复程序后,我明白你的意思了——这个人跳了一个像素,但一直呆在那里。我正在关注的在线 edX 课程似乎只使用 AWT,如果它真的过时了,这有点令人沮丧。

标签: java nullpointerexception awt


【解决方案1】:

把你的代码改成这个 -

private Canvas canvas;
public ColorImage jumpMan;

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

现在一切都会好的......

【讨论】:

    猜你喜欢
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多