The Java Program: MuApplet02.java

  1 // MuApplet02.java -- Mu puzzle applet, version 2
  2 
  3 /*
  4    <applet code=MuApplet02.java width=400 height=250></applet>
  5 */
  6 import java.applet.Applet;
  7 import java.awt.*;
  8 
  9 class Derivation02 extends Canvas {
 10    String derivation [] = new String [10];
 11    int number = 0;
 12    public void paint(Graphics g) {
 13       g.setFont (new Font ("TimesRoman", Font.BOLD, 18));
 14       for (int i=0; i<number; i++) {
 15          g.drawString (i+" "+derivation[i], 40, 20+23*i);
 16       }
 17    }
 18 }
 19 
 20 public class MuApplet02 extends Applet {
 21    TextField r1=new TextField(10), r2=new TextField(10);
 22    Panel p      = new Panel();
 23    Derivation02 d = new Derivation02();
 24    public void init() {
 25       setLayout (new BorderLayout());
 26       p.add (new Label ("Rule 1"));      p.add (r1);
 27       p.add (new Label ("Rule 2"));      p.add (r2);
 28       add ("North", p);
 29       add ("Center", d);
 30       setBackground (Color.white); // Make applet window stand out
 31       d.derivation [d.number++] = "MI";
 32    }
 33    public boolean action (Event evt, Object arg) {
 34       if (evt.target == r1) {
 35          String input = (String) arg;
 36          if (d.derivation [d.number-1].equals (input + "I")) {
 37            d.derivation [d.number++] = input+"IU";
 38            d.repaint();
 39          }
 40          return true;
 41       } else if (evt.target == r2) {
 42          String input = (String) arg;
 43          if (d.derivation [d.number-1].equals ("M"+ input)) {
 44            d.derivation [d.number++] = "M"+input+input;
 45            d.repaint();
 46          }
 47          return true;
 48       } else {
 49          return false;
 50       }
 51    }
 52 }