import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.text.*;
import java.util.*;
public class CanvasTest {
public static void main(String[]args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
CanvasTester frame=new CanvasTester();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class CanvasTester extends JFrame
{
public CanvasTester()
{
setTitle("CanvasTester");
setSize(300,300);
Testertimer tim=new Testertimer();
add(tim);
}
}
class Testertimer extends Canvas implements Runnable
{
long startime=0;
long endtime=0;
boolean bStart=false;
public Testertimer()
{
enableEvents(AWTEvent.ACTION_EVENT_MASK);
}

public void paint(Graphics g)
{
Date dat=null;
SimpleDateFormat f=new SimpleDateFormat("HH:mm:ss:SS");
try{
    dat=f.parse("00:00:00:00");
}
catch(Exception e)
{
e.printStackTrace();
}
dat.setTime(dat.getTime()+endtime-startime);
String str=f.format(dat);
g.fill3DRect(0, 0, 78, 28, true);
g.setColor(Color.WHITE);
g.drawString(str, 10, 20);

}
protected void processMouseEvent(MouseEvent e)
{

if(e.getID()==MouseEvent.MOUSE_PRESSED)
{
startime=endtime=System.currentTimeMillis();
bStart=true;
repaint();
}
else if(e.getID()==MouseEvent.MOUSE_RELEASED)
{
endtime=System.currentTimeMillis();
repaint();
bStart=false;
new Thread(this).start();
}
}
public void run()
{
while(bStart)
{
try{
    Thread.sleep(500);
}
catch(Exception e)
{
e.printStackTrace();
}
endtime=System.currentTimeMillis();
repaint();
}
}
}为什么这个程序的protected void processMouseMotionEvent(MouseEvent e)没有被调用呢,我在构造方法里面用enableEvents(AWTEvent.ACTION_EVENT_MASK);启用了鼠标移动事件啊,搞不懂,请教