On the mouse move event do something along these lines:

// This method give a point returns the shape which contains that point

Shape findShape( Point p )

for each Shape in my collection of shapes

if shape.contains( p )

return shape;

return null; // we aren't over a shape

So your shape class would have an abstract method

abstract boolean contains( Point p );

And you'd have to implement that for each shapes. Determining whether a point is within a shape is a fairly simple algorithm.