朋友们,进来帮我看看这个程序的问题?编译通过,不是不能运行

dszch 2005-10-26 12:00:42
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class MyCanvas implements KeyListener, MouseListener
{
Canvas c; //ÉùÃ÷Ò»¸ö»­²¼¶ÔÏó
String s="";
public static void main(String args[])
{
Frame f=new Frame("Canvas");
MyCanvas mc=new MyCanvas();
Canvas c=new Canvas();
f.add("Center",mc.c);

f.setSize(150,150);
mc.c.addMouseListener(mc); //×¢²á¼àÌýÆ÷
mc.c.addKeyListener(mc); //×¢²á¼àÌýÆ÷
f.setVisible(true);
}

public void mouseClicked(MouseEvent ev)
{
System.out.println("MouseClicked");
c.requestFocus();//»ñµÃ½¹µã£¬±íʾ¸Ã´°¿Ú½«½ÓÊÕÓû§µÄ¼üÅ̺ÍÊó±êÊäÈë
}

public void keyTyped(KeyEvent ev)
{
System.out.println("KeyTyped");
s+=ev.getKeyChar(); //»ñȡÿ¸öÊäÈëµÄ×Ö·û£¬ÒÀ´ÎÌí¼Óµ½×Ö·û´®sÖÐ
c.getGraphics().drawString(s,0,20); //ÏÔʾ×Ö·û´®s
}

public void keyPressed(KeyEvent ev) { System.out.println("KeyPressed"); }
public void keyReleased(KeyEvent ev) { System.out.println("KeyReleased"); }
public void mousePressed(MouseEvent ev) {System.out.println("MousePressed"); }
public void mouseReleased(MouseEvent ev) {System.out.println("MouseReleased"); }
public void mouseEntered(MouseEvent ev) {System.out.println("MouseEntered"); }
public void mouseExited(MouseEvent ev) {System.out.println("MouseExited"); }
}

用Jcreator编译通过,但是不能运行?显示结果如下:
Exception in thread "main" java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:584)
at java.awt.Container.add(Container.java:310)
at MyCanvas.main(MyCanvas.java:13)
Press any key to continue...

我不知道错在哪里,请高手指教一下,谢谢!
...全文
68 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
stan001140 2005-10-26
  • 打赏
  • 举报
回复
我晕,你这里的mc.c根本没有实例化,出现NullPointerException(空指针异常),
在下面两行之间加入一行,或写个方法将c赋给mc.c
Canvas c=new Canvas();
mc.c = c;
f.add("Center",mc.c);

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧