Самый простой способ, которым я могу придумать, - это избежать fillOval и использовать геометрию в пакете java.awt.geom. Таким образом, вы можете объявить эллипс, так как кажется, что овал, который вы рисуете, имеет статический размер.
class MyDrawPanel extends JComponent implements MouseListener {
Ellipse2D oval = new Ellipse2D.Double(70, 70, 100, 100);
....
}
Затем в paintComponent вы используете метод fill (Shape), чтобы нарисовать это.
public void paintComponent(Graphics g) {
....
Graphics2D g2d = (Graphics2D) g;
....
g2d.fill(oval);
}
Затем в случае мыши вы можете определить, находится ли щелчок в овале или нет:
public void mouseClicked(MouseEvent e) {
if ((e.getButton() == 1) && oval.contains(e.getX(), e.getY()) ) {
repaint();
// JOptionPane.showMessageDialog(null,e.getX()+ "\n" + e.getY());
}
}