// Using the Runnable interface.
// Barry Cornelius, 21 June 2000
import java.awt.    BorderLayout;
import java.awt.    Container;
import java.util.   Date;
import javax.swing. JApplet;
import javax.swing. JTextField;
public class ContinuousClockApplet extends JApplet implements Runnable
{ //BJCHEREFIRST
   private JTextField iJTextField;
   private Thread iThread;
   private volatile boolean iContinueExecution;
   public ContinuousClockApplet()
   {
      iJTextField = new JTextField(50);
      iThread = null;
      iContinueExecution = true;
   }
   public void init()
   {
      final Container tContentPane = getContentPane();
      tContentPane.add(iJTextField, BorderLayout.CENTER);
   }
   public void start()
   {
      if (iThread == null)
      {
         iThread = new Thread(this);
         iThread.start();
      }
   }
   public void stop()
   {
      if (iThread != null && iThread.isAlive())
      {
         iContinueExecution = false;
      }
      iThread = null;
   }
   public void run()
   {
      while (iContinueExecution)
      {
         final Date tDate = new Date(); 
         iJTextField.setText(tDate.toString());
         try
         {
            Thread.sleep(2000);
         }
         catch(final InterruptedException pInterruptedException)
         {
         }
      }
   }
}
