//------------// Introduction to Programming Using Java: An Object-Oriented Approach//	Arnow/Weiss//------------import java.awt.*;import java.awt.event.*;import java.applet.*;public class RedGreen2 extends Applet implements ActionListener{	public void init() {		setLayout(new BorderLayout(2,2));		b = new Button("start");		b.addActionListener(this);		c = new Canvas();		add("West",b);		add("East",c);		c.setSize(100,50);	}	public void actionPerformed(ActionEvent ae) {		String s = ae.getActionCommand();		if (s.equals("start"))			handleStart();		else if (s.equals("resume"))			handleResume();		else if (s.equals("stop"))			handleStop();	}	private void handleStart() {		b.setLabel("stop");		rgt = new RedGreenThread(c);		rgt.start();	}	private void handleResume() {		b.setLabel("stop");		rgt.myResume();	}	private void handleStop() {		b.setLabel("resume");		rgt.mySuspend();	}	Button          b;	Canvas          c;	RedGreenThread  rgt=null;}class RedGreenThread extends Thread {	RedGreenThread(Canvas c) {		this.c = c;	}	public void run() {		Graphics gc = c.getGraphics();		amRunning = true;		while (true)			if (amRunning) {				gc.setColor(new Color(200,50,50));				gc.fillRect(5,5,90,40);				try {					sleep(50);				} catch(Exception e) {}				gc.setColor(new Color(50,200,50));				gc.fillRect(5,5,90,40);				try {					sleep(50);				} catch(Exception e) {}			}	}	public void mySuspend() {		amRunning=false;	}	public void myResume() {		amRunning=true;	}	Canvas c;	boolean amRunning=false;}