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 }