// Program 13.3: The Event Tutor Applet import java.applet.Applet; import java.awt.Event; import java.awt.Graphics; import java.util.StringTokenizer; public class EventTutor extends Applet { private String events; private int num_events = 0; public void init() { listEvent("initializing the applet"); } public void start() { listEvent("starting the applet"); repaint(); } public void stop() { listEvent("stopping the applet"); repaint(); } public void destroy() { listEvent("destroying the applet"); } public boolean mouseUp(Event e, int x, int y) { listEvent("mouseUp at (" + x + "," + y + ")"); return false; } public boolean mouseDown(Event e, int x, int y) { listEvent("mouseDown at (" + x + "," + y + ")"); return false; } public boolean mouseDrag(Event e, int x, int y) { listEvent("mouseDrag at (" + x + "," + y + ")"); return false; } public boolean mouseMove(Event e, int x, int y) { listEvent("mouseMove event at (" + x + "," + y + ")"); return false; } public boolean mouseEnter(Event e, int x, int y) { listEvent("mouseEnter at (" + x + "," + y + ")"); return false; } public boolean mouseExit(Event e, int x, int y) { listEvent("mouseExit at (" + x + "," + y + ")"); return false; } public boolean keyDown(Event e, int x) { listEvent("keyDown: " + (char) x); return false; } public void paint(Graphics g) { int i = 0; int j = 1; int lineheight = 15; int numlines = 20; StringTokenizer st = new StringTokenizer(events.toString(), "\t"); while (st.hasMoreTokens()) { if (num_events - i++ < numlines) { g.drawString(st.nextToken(), 5, lineheight * j++); } } } private void listEvent(String st) { events += st + "\t"; showStatus(st); System.out.println(st); num_events++; repaint(); } }