Mouse Events


Mouse actions are commonly used in modern windows applications to trigger events. Events for mouse actions are divided into two sets: 

Event Listeners

Because there are no visible objects associated with mouse actions, there is no need to create and declare mouse objects.

The only thing that needs to be done is to create a listener associated with the applet:

eg.

this.addMouseListener(this);

this.addMouseMotionListener(this);

MouseListener

There are several event handlers for the MouseListener class:

void mouseClicked(MouseEvent e) - the mouse button has been clicked and released without moving the mouse.

void mouseReleased(MouseEvent e) - the mouse button has been released after the mouse has been dragged.

void mousePressed(MouseEvent e) - the mouse button has been pressed.

void mouseEntered(MouseEvent e) - the mouse has entered the window.

void mouseExited(MouseEvent e) - the mouse has exited the window.

A few common methods associated with MouseListener events are:

int getX()

int getY()

int getClickCount()

MouseMotionListener

The two event handlers for the MouseMotionListener class are:

void mouseDragged(MouseEvent e) - the mouse button has been pressed, held down and the mouse moved.

void mouseMoved(MouseEvent e) - the mouse has been moved.

A couple of common methods associated with MouseListener events are:

int getX()

int getY()

Note: below you will find a sample applet demonstrating all the mouse events indicated above. When using event handlers for MouseListener or MouseMotionListener, you must set up all the event handlers for that particular class. You may leave one or more of the listeners empty if you do not need them.

Sample Applet

import java.awt.*;
import java.applet.*;
import java.awt.event.*;


public class MouseEventSample extends Applet implements MouseListener, MouseMotionListener
{
	private int x, y;
	boolean clicked, released, pressed, entered, exited, dragged, moved;
	
	public void init() 
	{
	 this.addMouseListener(this);
	 this.addMouseMotionListener(this);
	}

	public void mouseClicked(MouseEvent e)
	{
	 resetBooleans();
	 x = e.getX();	
	 y = e.getY();
	 clicked = true;
	 repaint();
	}
	
	public void mouseReleased(MouseEvent e)
	{
	 resetBooleans();
	 x = e.getX();	
	 y = e.getY();
	 released = true;
	 repaint();	
	}
	
	public void mousePressed(MouseEvent e)
	{
	 resetBooleans();
	 x = e.getX();	
	 y = e.getY();
	 pressed = true;
	 repaint();		
	}
	
	public void mouseEntered(MouseEvent e)
	{
	 exited = false;
	 entered = true;
	 repaint();	
	}
	
	public void mouseExited(MouseEvent e)
	{
	 entered = false;
	 exited = true;
	 repaint();	
	}
	
	public void mouseDragged(MouseEvent e)
	{
	 resetBooleans();
	 x = e.getX();	
	 y = e.getY();
	 dragged = true;
	 repaint();	
	}
	
	public void mouseMoved(MouseEvent e)
	{
	 resetBooleans();
	 x = e.getX();	
	 y = e.getY();
	 moved = true;
	 repaint();	
	}
	
	public void paint(Graphics g) 
	{
	 if(clicked)
	   g.drawString("Mouse Clicked", x, y);
	 else if(released)
	   g.drawString("Mouse Released", x, y);
	 else if(pressed)
	   g.drawString("Mouse Pressed", x, y);
	 else if(dragged)
	   g.drawString("Mouse Dragged", x, y);
	 else if(moved)
	   g.drawString("Mouse Moved", x, y); 
	 
	 if(entered)
	   g.drawString("Mouse Entered", 100, 100);
	 else g.drawString("Mouse Exited", 100, 100);
	   
	}
	
	public void resetBooleans()
	{
	 clicked = false;
	 released = false; 
	 pressed = false;
	 dragged = false;
	 moved = false;
	}
}

For a complete listing of Mouse methods see:


Project 6

  1. Reverse engineer the following applet: