Home - Programming - Java- WatchMe Applet
WatchMe Applet
Download the Portable Copy HERE
/* Author: Brian Sonnie Program: WatchMe[Applet] 7/21/09 */ import javax.swing.*; import java.awt.*; import java.awt.event.*; /** This class is an applet that draws two eyes that follow your mouse */ public class WatchMe extends JApplet { /** init method */ public void init() { // Set the background color getContentPane().setBackground(Color.gray); // Add a mouse listener addMouseListener(new MyMouseListener()); // Add a mouse motion listener addMouseMotionListener(new MyMouseMotionListener()); } final int EYE_WIDTH = 30; // Width of the Eyes final int EYE_HEIGHT = 40; // Height of the Eyes final int PUPIL_SIZE = 10; // Size of the pupil final int EYE_X1 = 70; // Eye1 X coordinate final int EYE_Y1 = 40; // Eye1 Y coordinate final int EYE_X2 = 110; // Eye2 X coordinate final int EYE_Y2 = 40; // Eye2 Y coordinate boolean Exited = false; // Exited flag boolean mouseDown = false; // mouseDown flag // enumeration for the status of the Eye enum eyeStatus {STRAIGHT, UP, DOWN, LEFT, RIGHT}; eyeStatus currentStatus = eyeStatus.STRAIGHT; public void paint(Graphics g) { // Call the superclass paint method. super.paint(g); // set drawing color g.setColor(Color.black); // Draw 1st Eye g.drawOval(EYE_X1,EYE_Y1, EYE_WIDTH, EYE_HEIGHT); // Draw 2nd Eye g.drawOval(EYE_X2,EYE_Y2, EYE_WIDTH, EYE_HEIGHT); // Draw the pupil switch(currentStatus) { case STRAIGHT: lookStraight(g); break; case UP: lookUp(g); break; case DOWN: lookDown(g); break; case LEFT: lookLeft(g); break; case RIGHT: lookRight(g); break; } } /** Method lookStraight draws the pupils looking straight @param g The applet's Graphics object. */ public void lookStraight(Graphics g) { // Draw two filled ovals that represent pupils g.fillOval(EYE_X1 + (EYE_WIDTH/2)-(PUPIL_SIZE/2), EYE_Y1+(EYE_HEIGHT/2)-(PUPIL_SIZE/2), PUPIL_SIZE, PUPIL_SIZE); g.fillOval(EYE_X2 + (EYE_WIDTH/2)-(PUPIL_SIZE/2), EYE_Y2+(EYE_HEIGHT/2)-(PUPIL_SIZE/2), PUPIL_SIZE, PUPIL_SIZE); } /** Method lookUp draws the pupils looking up @param g The applet's Graphics object. */ public void lookUp(Graphics g) { // Draw two filled ovals that represent pupils g.fillOval(EYE_X1 + (EYE_WIDTH/2)-(PUPIL_SIZE/2), EYE_Y1, PUPIL_SIZE, PUPIL_SIZE); g.fillOval(EYE_X2 + (EYE_WIDTH/2)-(PUPIL_SIZE/2), EYE_Y2, PUPIL_SIZE, PUPIL_SIZE); } /** Method lookDown draws the pupils looking down @param g The applet's Graphics object. */ public void lookDown(Graphics g) { // Draw two filled ovals that represent pupils g.fillOval(EYE_X1 + (EYE_WIDTH/2)-(PUPIL_SIZE/2), EYE_Y1 + EYE_HEIGHT-PUPIL_SIZE, PUPIL_SIZE, PUPIL_SIZE); g.fillOval(EYE_X2 + (EYE_WIDTH/2)-(PUPIL_SIZE/2), EYE_Y2 + EYE_HEIGHT-10, PUPIL_SIZE, PUPIL_SIZE); } /** Method lookLeft draws the pupils looking left @param g The applet's Graphics object. */ public void lookLeft(Graphics g) { // Draw two filled ovals that represent pupils g.fillOval(EYE_X1, EYE_Y1+(EYE_HEIGHT/2)-(PUPIL_SIZE/2), PUPIL_SIZE,PUPIL_SIZE); g.fillOval(EYE_X2, EYE_Y1+(EYE_HEIGHT/2)-(PUPIL_SIZE/2), PUPIL_SIZE,PUPIL_SIZE); } /** Method lookRight draws the pupils looking Right @param g The applet's Graphics object. */ public void lookRight(Graphics g) { // Draw two filled ovals that represent pupils g.fillOval(EYE_X1+EYE_WIDTH-PUPIL_SIZE, EYE_Y1+(EYE_HEIGHT/2)-(PUPIL_SIZE/2), PUPIL_SIZE,PUPIL_SIZE); g.fillOval(EYE_X2+EYE_WIDTH-PUPIL_SIZE, EYE_Y1+(EYE_HEIGHT/2)-(PUPIL_SIZE/2), PUPIL_SIZE,PUPIL_SIZE); } /** Private inner class that handles mouse events Deals with setting the flags for mouseDown and Excited. */ private class MyMouseListener implements MouseListener { public void mousePressed(MouseEvent e) { // Set mouseDown flag to true mouseDown = true; } // Overriden Method \ public void mouseClicked(MouseEvent e) {} public void mouseReleased(MouseEvent e) { // Set mouseDown flag to false mouseDown=false; } public void mouseEntered(MouseEvent e) { // Set Exited flag to false Exited = false; } public void mouseExited(MouseEvent e) { currentStatus = eyeStatus.STRAIGHT; // Set Exited flag to true Exited = true; // Force a call to the paint method repaint(); } } /** Private inner class to handle mouse motion events. */ private class MyMouseMotionListener implements MouseMotionListener { public void mouseDragged(MouseEvent e) {} public void mouseMoved(MouseEvent e) { // Get the last Status of the Eyes. eyeStatus oldStatus = currentStatus; if(!Exited) { // If mouse is above eyes if(e.getY() < 40) currentStatus = eyeStatus.UP; // If mouse is below eyes else if(e.getY() > EYE_Y1+EYE_HEIGHT) currentStatus = eyeStatus.DOWN; // If mouse is to the left of the eyes else if(e.getX() < EYE_X1) currentStatus = eyeStatus.LEFT; // If mouse is to the right of the eyes else if(e.getX() > EYE_X2 + EYE_WIDTH) currentStatus = eyeStatus.RIGHT; // Else it is on the eyes else currentStatus = eyeStatus.STRAIGHT; } else { currentStatus = eyeStatus.STRAIGHT; } // If status changed repaint this improves display if(oldStatus!=currentStatus) repaint(); } } }