黑骏马
发贴: 14
积分: 0
|
于 2008-06-19 14:50
题目:一个计时器部件,鼠标在部件上按下时,计时器开始计时,并在部件上显示计时时间,鼠标释放时,计时器停止计时。(其中注释部分是我自已理解的,由于才开始学习JAVA,有些可能是错误的,请凉解)
import java.awt.*; import java.awt.event.*; import java.util.*; import java.text.SimpleDateFormat; class StopWatch extends Canvas implements Runnable { private long startTime=0;//定义长整型startTime private long endTime=0;//定义长整型endTime private boolean bStart=false;//定义布尔型bStart public StopWatch()//StopWatch方法 { enableEvents(AWTEvent.MOUSE_EVENT_MASK);//鼠标事件 setSize(80,30);//设置跑表显示的区域大小 } protected void processMouseEvent(MouseEvent e)//鼠标活动时间 { if(e.getID()==MouseEvent.MOUSE_PRESSED)//读取鼠标活动时间 { bStart=true;//对bStart进行赋值 startTime=endTime=System.currentTimeMillis();//获区当前系统当前时间 repaint();//重新绘制 new Thread(this).start();//初始化线程 } else if(e.getID()==MouseEvent.MOUSE_RELEASED)//判断鼠标释放时间 { bStart=false;//鼠标没有释放 repaint();//重新绘制 } super.processMouseEvent;//对鼠标事件的处理 } public void paint(Graphics g)//绘制的方法 { SimpleDateFormat sdf=new SimpleDateFormat("HH:mm:ss");//定义sdf elapsedTime.setTime(endTime-startTime); Date elapsedTime=null;//没有释放时间 try { elapsedTime=sdf.parse("00:00:00");//读取释放时间 }catch(Exception e){}//异常处理 elapsedTime.setTime(endTime-startTime+ elapsedTime.getTime());//获得释放时间 String display=sdf.format(elapsedTime);//释放时间初始化 g.drawRect(0,0,78,28);//绘制区域的大小 g.fill3DRect(2,2,75,25,true); g.setColor(Color.RED);//设置时间显示的颜色 g.drawString(display,10,20);//绘制的时间与范围 } public void run()//运行的方法 { while(bStart) { try { Thread.sleep(500);//线程睡眠 }catch(Exception e){e.printStackTrace();} endTime=System.currentTimeMillis();//结束的时间 repaint();//重新绘制 } } } public class TestStopWatch//定义TestStopWatch类 { public static void main(String args[]) { Frame f=new Frame("StopWatch");//设置按钮 f.add(new StopWatch());//添加StopWatch f.setSize(200,200);//设置大小 f.setVisible(true);//显示 f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e)//关闭窗口 { System.exit(0); } }); } }
|