文件1:
package com.stopwatch;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.text.ParseException;
import java.text.SimpleDateFormat; 
public 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(60,70);
 }
 protected void processMouseEvent(MouseEvent e){
  if (e.getID() == MouseEvent.MOUSE_PRESSED) {
   bStart = true;
   new Thread(this).start();
   startTime = endTime =System.currentTimeMillis();
   repaint();
  }else if (e.getID() == MouseEvent.MOUSE_RELEASED) {
   endTime = System.currentTimeMillis();
   repaint();
   bStart = false;
  }
 }
 
 public void paint(Graphics g){
  SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
  Date elapseTime =null;
  
  try {
   elapseTime =sdf.parse("00:00:00");
  } catch (ParseException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  elapseTime.setTime(endTime-startTime+elapseTime.getTime());
  g.draw3DRect(50, 50, 30, 10, true);
  String display = sdf.format(elapseTime);
  g.drawString(display, 25, 8);
  
 }
 
 public void run(){
  while (bStart) {
   try {
    Thread.sleep(300);
   } catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
   }
   endTime = System.currentTimeMillis();
   repaint();
  }
 } 
}
文件2:
package com.stopwatch;
import java.awt.Frame;
public class TestStopWatch  extends Frame{
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  StopWatch sw = new StopWatch();
  Frame f = new Frame();
  f.add(new StopWatch());
  f.setSize(100, 100);
  f.setVisible(true);
 } 
}
我找不到哪里有错····帮忙找一下!

解决方案 »

  1.   

    StopWatch 没看明白
    import java.awt.Frame;
    import java.awt.event.WindowEvent;
    import java.awt.event.WindowAdapter;public class TestStopWatch {
      /**
       * @param args
       */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            final StopWatch sw = new StopWatch();
            final Frame f = new Frame();
            f.add(sw);
            f.addWindowListener(new WindowAdapter(){
                @Override public void windowClosing(WindowEvent e){
                    f.dispose();
                }
            });
            f.setSize(100, 100);
            f.setVisible(true);
        }
    }
      

  2.   

    你的这两段代码放在一起就可以实现了:
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.awt.Frame;
     
    public 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(60,70);
     }
     protected void processMouseEvent(MouseEvent e){
      if (e.getID() == MouseEvent.MOUSE_PRESSED) {
      bStart = true;
      new Thread(this).start();
      startTime = endTime =System.currentTimeMillis();
      repaint();
      }else if (e.getID() == MouseEvent.MOUSE_RELEASED) {
      endTime = System.currentTimeMillis();
      repaint();
      bStart = false;
      }
     }
     
     public void paint(Graphics g){
      SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
      Date elapseTime =null;
      
      try {
      elapseTime =sdf.parse("00:00:00");
      } catch (ParseException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      }
      elapseTime.setTime(endTime-startTime+elapseTime.getTime());
      g.draw3DRect(50, 50, 30, 10, true);
      String display = sdf.format(elapseTime);
      g.drawString(display, 25, 8);
      
     }
     
     public void run(){
      while (bStart) {
      try {
      Thread.sleep(300);
      } catch (Exception e) {
      // TODO: handle exception
      e.printStackTrace();
      }
      endTime = System.currentTimeMillis();
      repaint();
      }
     }public static void main(String[] args) {
      // TODO Auto-generated method stub
      StopWatch sw = new StopWatch();
      Frame f = new Frame();
      f.add(new StopWatch());
      f.setSize(200, 200);
      f.setVisible(true);
     }
     
    }