You don't want an ActionListener, you want a MouseListener.
How are you displaying your image? For a mouse listener to be added, your image needs to be displayed on a Component object (or any subclass). So for instance, you can display it on a JLabel and add the mouse listener to that label.
> But how can I tell if it is on the image? Say I have
> a irregular shape, how do I tell if it's been clicked?
If you set the container (JLabel or JPanel) to the size of the image, then the mouse clicks will always be on the image somewhere. If you want to know if a specific area inside the rectangular image was clicked, then you'll have to implement that yourself. If the area is a circle in the middle of the image, then do the math to see if the distance from the center of the circle to the mouse click location is <= the radius of the circle. There's no way to automatically determine where those areas in the images are.
> So you can't tell if a point is within an Image
> without doing it yourself?
No, an image is just a rectangle of pixels. You can tell if the click is within that rectangle, but if you want to examine shapes that those pixels make up, then you have to do that yourself. How would java know where the shapes were, let alone which one you wanted to know about?
> By testing if the Point was transparent or not, if it
> was not return the Image it is on.
That's actually a really good idea, I hadn't thought of that. :) You'll still have to implement it yourself, but it'll be much easier than my earlier suggestion. And make sure that your image always has a transparent background.
Question on how to do that, should I extend BufferedImage and write a method the grabs the pixles of the image and check if the point is in bounds and if it is nontransparent (BTW, how can you tell if it is Transparent?), or should I extend Graphics and try it that way, or just write a static method of a helper class and use it that way?