这个程序,是按住鼠标,计时器部件就开始计时。可是我不明白是怎么算的,我已经用红色标出,请各位帮小弟一下忙;getTime()怎么用啊
package java09;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.text.SimpleDateFormat;import com.sun.org.apache.bcel.internal.generic.NEW;
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)
{
SimpleDateFormat sdf=new SimpleDateFormat("HH:mm:ss");
Date elapsedTime=null;
String aa=sdf.format(new Date().getTime());
System.out.println(aa);
try {
elapsedTime=sdf.parse("00:00:00");
} catch (Exception e) {
// TODO: handle exception
}
elapsedTime.setTime(endTime-startTime+elapsedTime.getTime());//这是怎么算的???
String display=sdf.format(elapsedTime.getTime());
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) {
// TODO: handle exception
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);
}
});
}
}