Java/Swing Components/Timer

Материал из Java эксперт
Перейти к: навигация, поиск

Timer Bean

   <source lang="java">

/**

* @version 1.10 1999-09-28
* @author Cay Horstmann
*/

import java.io.Serializable; import java.util.Date; import java.util.EventListener; import java.util.EventObject; import java.util.Vector; public class TimerBean implements Runnable, Serializable {

 public int getInterval() {
   return interval;
 }
 public void setInterval(int i) {
   interval = i;
 }
 public boolean isRunning() {
   return runner != null;
 }
 public void setRunning(boolean b) {
   if (b && runner == null) {
     runner = new Thread(this);
     runner.start();
   } else if (!b && runner != null) {
     runner.interrupt();
     runner = null;
   }
 }
 public synchronized void addTimerListener(TimerListener l) {
   timerListeners.addElement(l);
 }
 public synchronized void removeTimerListener(TimerListener l) {
   timerListeners.removeElement(l);
 }
 public void fireTimerEvent(TimerEvent evt) {
   Vector currentListeners = null;
   synchronized (this) {
     currentListeners = (Vector) timerListeners.clone();
   }
   for (int i = 0; i < currentListeners.size(); i++) {
     TimerListener listener = (TimerListener) currentListeners
         .elementAt(i);
     listener.timeElapsed(evt);
   }
 }
 public void run() {
   if (interval <= 0)
     return;
   try {
     while (!Thread.interrupted()) {
       Thread.sleep(interval);
       fireTimerEvent(new TimerEvent(this));
     }
   } catch (InterruptedException e) {
   }
 }
 private int interval = 1000;
 private Vector timerListeners = new Vector();
 private Thread runner;

} class TimerEvent extends EventObject {

 public TimerEvent(Object source) {
   super(source);
   now = new Date();
 }
 public Date getDate() {
   return now;
 }
 private Date now;

} interface TimerListener extends EventListener {

 public void timeElapsed(TimerEvent evt);

}

      </source>