⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 teststopwatch.java

📁 计时线程.鼠标按下时
💻 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;
	private long endTime = 0;
	private boolean bStart = false;
	public StopWatch()
	{
		enableEvents(AWTEvent.MOUSE_EVENT_MASK);
		setSize(80,30);
	}
	protected void processMouseEvent(MouseEvent e)
	{
		if(e.getID() == MouseEvent.MOUSE_PRESSED)
		{
/*鼠标按下时,启动计时线程,并让起始时间变量和终止时间变量都等于当前时间*/
			bStart = true;
			startTime = endTime  = System.currentTimeMillis();
			repaint();
			new Thread(this).start();
		}
		else if(e.getID() == MouseEvent.MOUSE_RELEASED)
		{
			/*鼠标释放时,终止计时线程,并重绘窗口表面上的内容*/
			bStart = false;
			repaint();
		}
		super.processMouseEvent(e);
	}
	public void paint(Graphics g)
	{
/*时间值的小时、分钟、秒、都用两位数字显示,
不足两位的部分前面加0,即"HH:mm:ss"这种的格式。*/
		SimpleDateFormat sdf= new SimpleDateFormat("HH:mm:ss"); 
	/*最刚开始编写这个程序的时候,直接使用elapsedTime.setTime(endTime-startTime);
语句设置elapsedTime时间对象的数字值,从运行结果上发现,即使endTime-startTime等于0,
但elapsedTime显示的时间却不是"00:00:00",而是"08:00:00"。我们曾经讲过,时间在计算机
内存中也是用一个长整数表示的,在这里,我们又发现,即使这个内存中的长整数等于0时,由于
Date类考虑了本地时区问题,所以,其表示的时间就不一定为"零点:零分:零秒"。这里不需要
考虑时区问题,只是借助Date类来帮我们生成"HH:mm:ss"这种时间表示格式。明白这个问题后,
我们就不难想像出,可以先求出显示时间为"00:00:00"的时间对象在内存中对应的那个长整数,
然后在这个基础上加上计时器所记下的时间值,最后就可以显示出我们想要的结果。*/	
		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.WHITE);
		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
{
	public static void main(String [] args)
	{
		Frame f =new Frame("StopWatch");
		f.add(new StopWatch());
		f.setSize(200,200);
		f.setVisible(true);
			f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
				{
					System.exit(0);
				}
				});
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -