怎麼實現秒錶的功能??有個按鈕,一按開始計時,再按停止

怎麼實現秒錶的功能??有個按鈕,一按開始計時,再按停止。 

public   class   StopWatch   extends   javax.swing.JFrame   {  
          private   TimerThread   timer   =   null;  
          /**   Creates   new   form   StopWatch   */  
          public   StopWatch()   {  
                  initComponents();  
                  timer   =   new   TimerThread();  
          }  
           
          /**   This   method   is   called   from   within   the   constructor   to  
            *   initialize   the   form.  
            *   WARNING:   Do   NOT   modify   this   code.   The   content   of   this   method   is  
            *   always   regenerated   by   the   Form   Editor.  
            */  
          private   void   initComponents()   {  
                  txcounter   =   new   javax.swing.JTextField();  
                  btstart   =   new   javax.swing.JButton();  
                  btreset   =   new   javax.swing.JButton();  
                  jLabel1   =   new   javax.swing.JLabel();  
                  btmark   =   new   javax.swing.JToggleButton();  
                  jScrollPane1   =   new   javax.swing.JScrollPane();  
                  tarea   =   new   javax.swing.JTextArea();  
   
                  getContentPane().setLayout(new   org.netbeans.lib.awtextra.AbsoluteLayout());  
   
                  addWindowListener(new   java.awt.event.WindowAdapter()   {  
                          public   void   windowClosing(java.awt.event.WindowEvent   evt)   {  
                                  exitForm(evt);  
                          }  
                  });  
   
                  getContentPane().add(txcounter,   new   org.netbeans.lib.awtextra.AbsoluteConstraints(70,   40,   120,   30));  
   
                  btstart.setText("/u542f/u52a8");  
                  btstart.addActionListener(new   java.awt.event.ActionListener()   {  
                          public   void   actionPerformed(java.awt.event.ActionEvent   evt)   {  
                                  btstartActionPerformed(evt);  
                          }  
                  });  
   
                  getContentPane().add(btstart,   new   org.netbeans.lib.awtextra.AbsoluteConstraints(200,   40,   -1,   -1));  
   
                  btreset.setText("/u91cd/u7f6e");  
                  btreset.addActionListener(new   java.awt.event.ActionListener()   {  
                          public   void   actionPerformed(java.awt.event.ActionEvent   evt)   {  
                                  btresetActionPerformed(evt);  
                          }  
                  });  
   
                  getContentPane().add(btreset,   new   org.netbeans.lib.awtextra.AbsoluteConstraints(260,   40,   60,   -1));  
   
                  jLabel1.setFont(new   java.awt.Font("Dialog",   1,   14));  
                  jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);  
                  jLabel1.setText("/u8ba1/u65f6/u5668");  
                  jLabel1.setToolTipText("null");  
                  getContentPane().add(jLabel1,   new   org.netbeans.lib.awtextra.AbsoluteConstraints(20,   40,   50,   30));  
   
                  btmark.setText("/u8ba1/u65f6");  
                  btmark.addActionListener(new   java.awt.event.ActionListener()   {  
                          public   void   actionPerformed(java.awt.event.ActionEvent   evt)   {  
                                  btmarkActionPerformed(evt);  
                          }  
                  });  
   
                  getContentPane().add(btmark,   new   org.netbeans.lib.awtextra.AbsoluteConstraints(320,   40,   60,   -1));  
   
                  jScrollPane1.setViewportView(tarea);  
   
                  getContentPane().add(jScrollPane1,   new   org.netbeans.lib.awtextra.AbsoluteConstraints(20,   80,   360,   150));  
   
                  pack();  
          }  
   
          private   void   btresetActionPerformed(java.awt.event.ActionEvent   evt)   {  
                  //   Add   your   handling   code   here:  
                  tarea.setText("");  
                  timer.reset();  
          }  
   
          private   void   btmarkActionPerformed(java.awt.event.ActionEvent   evt)   {  
                  //   Add   your   handling   code   here:  
                  timer.mark   =   true;  
          }  
   
          private   void   btstartActionPerformed(java.awt.event.ActionEvent   evt)   {  
                  //   Add   your   handling   code   here:  
                  if(btstart.getLabel().equalsIgnoreCase("啓動"))  
                  {  
                          btstart.setLabel("停止");  
                          if(timer.stop)  
                                  timer.stop   =   false;  
                          else  
                                  timer.start();  
                  }  
                  else  
                  {  
                          btstart.setLabel("啓動");  
                          timer.stopCounter();  
                  }  
          }  
           
          /**   Exit   the   Application   */  
          private   void   exitForm(java.awt.event.WindowEvent   evt)   {  
                  System.exit(0);  
          }  
           
          /**  
            *   @param   args   the   command   line   arguments  
            */  
          public   static   void   main(String   args[])   {  
                  StopWatch   watch   =   new   StopWatch();  
                  watch.setSize(400,300);  
                  watch.show();  
          }  
          class   TimerThread   extends   Thread  
          {  
                  boolean   active   =     false;  
                  boolean   stop   =   false;  
                  boolean   mark   =   false;  
                  private   int   counter   =   0;  
                  private   long   startTime   =   0;  
                  TimerThread()  
                  {  
                          init();  
                  }  
                  public   void   stopCounter()  
                  {  
                          stop   =   true;  
                  }  
                  public   void   reset()  
                  {  
                          init();  
                          startTime   =   System.currentTimeMillis();  
                  }  
                  public   void   init()  
                  {  
                          counter   =   0;  
                          active   =   true;  
                          stop   =   false;  
                  }  
                  public   void   destory()  
                  {  
                          active   =   false;  
                          stop   =   true;  
                  }  
                  private   String   getTime()  
                  {  
                          long   tmp   =   System.currentTimeMillis()-startTime;  
                          int   d   =   (int)(tmp/(1000*60*60))%24;//分  
                          String   temp   =   (d<10   ?   "0"+d   :   d+"")+":";  
                          d   =   (int)(tmp/(1000*60))%60;//分  
                          temp   +=   (d<10   ?   "0"+d   :   d+"")+":";  
                          d   =   (int)(tmp/1000)%60;//秒  
                          temp   +=   (d<10   ?   "0"+d   :   d+"")+".";  
                          temp   +=   (tmp%1000)/100;  
                          return   temp;  
                  }  
                  private   void   pr(String   message)  
                  {  
                          System.out.println(message);  
                  }  
                  public   void   run()  
                  {  
                          startTime   =   System.currentTimeMillis();  
                          while(active)  
                          {  
                                  while(!stop)  
                                  {  
                                          if(mark)  
                                          {  
                                                  tarea.append(getTime()   +   "   第"+   counter   +   "次計數   /n");  
                                                  counter++;  
                                                  mark   =   false;  
                                          }  
                                          txcounter.setText(getTime());  
                                          try{Thread.sleep(100);}catch(Exception   e){}  
                                  }  
                                  try{Thread.sleep(100);}catch(Exception   e){}  
                          }  
                  }  
          }  
           
          //   Variables   declaration   -   do   not   modify  
          private   javax.swing.JButton   btreset;  
          private   javax.swing.JTextField   txcounter;  
          private   javax.swing.JScrollPane   jScrollPane1;  
          private   javax.swing.JToggleButton   btmark;  
          private   javax.swing.JButton   btstart;  
          private   javax.swing.JLabel   jLabel1;  
          private   javax.swing.JTextArea   tarea;  
          //   End   of   variables   declaration  
           
  }  
  Top

3 樓geddy()回覆於 2004-11-16 20:59:29 得分 0

org.netbeans.lib.awtextra.AbsoluteLayout()  
  org.netbeans.lib.awtextra.AbsoluteConstraints()  
  未定義啊,能不能用標準的庫實現!Top

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章