// AbsorbingChain.java// Written by Julian Devlin, 8/97, for the text book// "Introduction to Probability," by Charles M. Grinstead & J. Laurie Snellimport java.applet.Applet;import java.awt.*;public class AbsorbingChain	extends java.applet.Applet{	Label numl1, numl2;			// Controls	TextField num1, num2;		Button create;		AbsorbingWindow abw;		GridBagLayout gbl;	GridBagConstraints cc;			// Initialize applet	public void init()	{			numl1 = new Label("Transient states = ");			// Create controls		num1 = new TextField("4", 4);		numl2 = new Label("Absorbing states = ");			// Create controls		num2 = new TextField("2", 4);		create = new Button("Create");				gbl = new GridBagLayout();		cc = new GridBagConstraints();		setLayout(gbl);				cc.gridx = 0;		cc.gridy = 0;		gbl.setConstraints(numl1, cc);		add(numl1);				cc.gridx = 1;		gbl.setConstraints(num1, cc);		add(num1);				cc.gridx = 0;		cc.gridy = 1;		gbl.setConstraints(numl2, cc);		add(numl2);				cc.gridx = 1;		gbl.setConstraints(num2, cc);		add(num2);				cc.gridx = 0;		cc.gridy = 2;		cc.gridwidth = 2;		gbl.setConstraints(create, cc);		add(create);				validate();	}		// Handle events	public boolean handleEvent(Event evt)	{		String minStr, maxStr;		if (evt.target instanceof Button)		{			if (evt.target == create && evt.id == Event.ACTION_EVENT)	// When button is clicked			{        		create(Integer.valueOf(num1.getText()).intValue(),         			Integer.valueOf(num2.getText()).intValue());        		return true;					// Generate correct number of tosses			}		}		return super.handleEvent(evt);	// Handle other events as usual	}		// Calculate probabilities    public void create(int trans, int absorb)    {	 		abw = new AbsorbingWindow(trans, absorb);    	Point p = location();    	abw.move(p.x + 50, p.y + 50);    	abw.init();    	abw.show();    	abw.resize(abw.preferredSize());   	 	abw.validate();	}}
