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);启用了鼠标移动事件啊,搞不懂,请教
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货