<:> WhatDoYouCall applet



   import javax.swing.*;
   import java.awt.event.*;
   import java.awt.*;


   class JokePanel extends JPanel {
      String string;

      public void paintComponent(Graphics g) {
         super.paintComponent(g);
         if (string != null) g.drawString(string, 10, 20);
      }
   }


   public class WhatDoYouCall extends JApplet implements MouseListener {
      String answer = null;
      int index = 0;
      JokePanel jokePanel = new JokePanel();

      String map[][] = {
         {"tail", "pursuer", "wags"},
            {"plane", "flat surface", "flies"},
            {"motor", "power source", "vibrates"},
            {"bike", "cycle", "has pedals"},
            {"car", "vehicle", "has four doors"},
            {"park", "nature reserve", "is open to the public"},
            {"ice", "glacier", "freezes"},
            {"box", "case", "you can keep things in"}
      };

      public void init() {
         this.addMouseListener(this);
         jokePanel.setBackground(Color.white);
         getContentPane().add(jokePanel);
      }

      public void mousePressed(MouseEvent event) {
         if (answer != null) {
            jokePanel.string = "Answer: " + answer;
            answer = null;
            index += 2;
            if (index >= map.length) index = (index+1) % map.length; }
         else {
            int i = index, j = i-1;
            String thing = map[i][1], desc = null;
            if (i % 2 == 0) j = i+1;
            desc = map[j][2];
            jokePanel.string = "Question: what do you call a " + thing + " that " + desc + "?";
            answer = map[Math.min(i,j)][0] + map[Math.max(i,j)][0]; }
         repaint();
      }

      public void mouseReleased(MouseEvent event) { }
      public void mouseClicked(MouseEvent event) { }
      public void mouseEntered(MouseEvent event) { }
      public void mouseExited(MouseEvent event) { }

  }