Ну, во-первых, вы рисуете все свои изображения в (0,0), вы уверены, что хотите это сделать? Если вы сделаете это, возможно, вы нажмете точку, которая принадлежит всем вашим изображениям (es, 0,0).
Кстати, внутри вашего MouseListener у вас есть этот метод:
public void mouseClicked(MouseEvent e)
{
Point point = e.getPoint();
}
point хранит координаты вашего клика относительно компонента, который вы слушаете.
Так что вам нужно просто проверить, находится ли точка, на которой вы щелкаете, внутри области изображения. Вы можете сделать следующее:
Rectangle imageBounds = new Rectangle(x,y,image_width, image_height);
if (imageBounds.contains(point)){
//point is inside given image
}
где x, y - это координата, в которой вы рисуете изображение с помощью метода drawImage (0,0 в вашем случае), а image_width, image_height - это размер вашего изображения.
EDIT:
есть альтернатива решению, которое я объяснил выше. Как и в случае с Hovercraft Full Of Eels, вы можете сделать следующее:
- создайте JLabel для каждого изображения, которое вы хотите отобразить
- используйте метод JLabel setIcon () , чтобы указать изображение, которое будет отображаться на каждой метке.
- Добавьте ваши ярлыки в JPanel
- добавить слушателя мыши для каждого JLabel
Этот подход имеет большое преимущество: вам не нужно беспокоиться о координатах мыши, потому что у каждого JLabel есть свой относительный слушатель мыши.
Единственное, что вам следует учитывать, это следующее:
используя Компонент вместо того, чтобы рисовать ваши изображения, вы не сможете полностью отравить их, но вы должны использовать подходящий LayoutManager для размещения вашего JLabel.