Guarda e magari prova la seguente applet (basta che la applet abbia una superficie di 200x200 pixel).
Disegna un poligono che normalmente è blu. Quando ci passi esattamente sopra con il mouse, il poligono si colora di rosso.
Anche se non ti fosse tutto chiaro, soffermati su come viene gestito il ri-disegno della applet. Ovvero sul fatto che i metodi degli eventi del mouse non disegnano direttamente qualcosa ma cambiano solo lo stato di una variabile di "flag" che indica se il mouse è "sopra" e poi chiedono il repaint asincrono.

Per qualunque dubbio, chiedi pure.

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

public class PoligonoApplet extends Applet {
    private Polygon poligono;
    private boolean isOver;

    public void init() {
        try {
            EventQueue.invokeAndWait(new Runnable() {
                public void run() {
                    initGui();
                }
            });
        } catch (Exception e) {
            System.err.println("initialization failed");
        }
    }

    private void initGui() {
        poligono = new Polygon();
        poligono.addPoint(75, 30);
        poligono.addPoint(120, 60);
        poligono.addPoint(90, 75);
        poligono.addPoint(130, 130);
        poligono.addPoint(65, 120);
        poligono.addPoint(20, 75);

        addMouseMotionListener(new MouseMotionAdapter() {
            public void mouseMoved(MouseEvent e) {
                isOver = poligono.contains(e.getPoint());
                repaint();
            }

            public void mouseExited(MouseEvent e) {
                isOver = false;
                repaint();
            }
        });
    }

    public void paint(Graphics g) {
        super.paint(g);

        if (isOver) {
            g.setColor(Color.RED);
        } else {
            g.setColor(Color.BLUE);
        }

        g.fillPolygon(poligono);
    }
}