Stop.java


</COMMENT> No Java 2 support for APPLET!!

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import com.bruceeckel.swing.*;

public class Stop extends JApplet {
JTextArea  Xout  = new JTextArea(5, 15);
  private JButton 
    stopB = new JButton("Stop");
  private Stopped stoppedT = new Stopped();
  public void init() {
    Container cp = getContentPane();
    cp.setLayout(new FlowLayout());
    cp.add(stopB);
    cp.add(new JScrollPane(Xout));
    stoppedT.start();
    stopB.addActionListener(
      new ActionListener() {
        public 
        void actionPerformed(ActionEvent e) {
          stopB.setEnabled(false);
          stopB.setBackground(Color.red);
          stoppedT.requestStop();
          stoppedT = null; // to release it
        }
      });
  }

  class Stopped extends Thread {
   // Must be volatile:
   private volatile boolean stopF = false;
   private int counter = 0;
   public synchronized void run() {
    while(!stopF) {
        Xout.append("counter: " + counter++ + "\n");
        try {
          sleep(2000);
        } catch(InterruptedException e) {
          System.err.println("Interrupted");
        }
    }
    if(stopF)
      Xout.append("Detected stop");
   }
   public void requestStop() { 
      stopF = true; 
   }
  }

  public static void main(String[] args) {
    Console.run(new Stop(), 200, 100);
  }
} ///: