中国Java开发网 中国Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» 中国Java开发网 » Java GUI 设计  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 此程序为什么不能正常运行,多谢啦。
黑骏马





发贴: 14
积分: 0
于 2008-06-19 14:50 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
题目:一个计时器部件,鼠标在部件上按下时,计时器开始计时,并在部件上显示计时时间,鼠标释放时,计时器停止计时。(其中注释部分是我自已理解的,由于才开始学习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.processMouseEventEnvelope;//对鼠标事件的处理
}
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);
}
});
}
}



作者 Re:此程序为什么不能正常运行,多谢啦。 [Re:黑骏马]
billgacsli





发贴: 11
积分: 0
于 2008-06-20 11:02 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
这标题取得真是…………
按您这源码,编译都编译不了,还说运行

主要就是paint方法,仔细瞅明白了,就是一个时间间隔计算问题
其中的下面这段代码更是画蛇添足,不知道要干嘛

Date elapsedTime=null;//没有释放时间
try
{
elapsedTime=sdf.parse("00:00:00");//读取释放时间
}catch(Exception e){}//异常处理
elapsedTime.setTime(endTime-startTime+
elapsedTime.getTime());//获得释放时间

ps:注释只要针对关键代码就好了。



作者 Re:此程序为什么不能正常运行,多谢啦。 [Re:黑骏马]
黑骏马





发贴: 14
积分: 0
于 2008-06-21 09:47 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
多谢,billgacsli.
上面的程序是张孝祥教程里的一段程序。去掉
elapsedTime.setTime(endTime-startTime);
这一行代码程序就可以正常运行了。
我想程序里的下面这些代码会使程序更加严谨。
Date elapsedTime=null;//没有释放时间
try
{
elapsedTime=sdf.parse("00:00:00");//读取释放时间
}catch(Exception e){}//异常处理
elapsedTime.setTime(endTime-startTime+
elapsedTime.getTime());//获得释放时间




flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2018 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号
客服电话 0592-8750026    客服信箱 714923@qq.com    客服QQ 714923