Topic: 此程序为什么不能正常运行,多谢啦。 |
Print this page |
1.此程序为什么不能正常运行,多谢啦。 | Copy to clipboard |
Posted by: 黑骏马 Posted on: 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); } }); } } |
2.Re:此程序为什么不能正常运行,多谢啦。 [Re: 黑骏马] | Copy to clipboard |
Posted by: billgacsli Posted on: 2008-06-20 11:02 这标题取得真是………… 按您这源码,编译都编译不了,还说运行 主要就是paint方法,仔细瞅明白了,就是一个时间间隔计算问题 其中的下面这段代码更是画蛇添足,不知道要干嘛 Date elapsedTime=null;//没有释放时间 try { elapsedTime=sdf.parse("00:00:00");//读取释放时间 }catch(Exception e){}//异常处理 elapsedTime.setTime(endTime-startTime+ elapsedTime.getTime());//获得释放时间 ps:注释只要针对关键代码就好了。 |
3.Re:此程序为什么不能正常运行,多谢啦。 [Re: 黑骏马] | Copy to clipboard |
Posted by: 黑骏马 Posted on: 2008-06-21 09:47 多谢,billgacsli. 上面的程序是张孝祥教程里的一段程序。去掉 elapsedTime.setTime(endTime-startTime); 这一行代码程序就可以正常运行了。 我想程序里的下面这些代码会使程序更加严谨。 Date elapsedTime=null;//没有释放时间 try { elapsedTime=sdf.parse("00:00:00");//读取释放时间 }catch(Exception e){}//异常处理 elapsedTime.setTime(endTime-startTime+ elapsedTime.getTime());//获得释放时间 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |