JFrame macht eigentlich keinen Sinn. Das Bild wird in einer Component gezeichnet. Idealerweise enthält die NUR das Bild, und Idealerweise ist das Bild ein BufferedImage. Dann hängt man einen MouseListener an die Component, und holt sich bei mouseClicked den Pixel des Bildes an der Position des Mausklicks (mouseEvent.getPoint(), bufferedImage.getRGB). Alles andere ist ... frickeliger, aber MouseListener ist schonmal ein Ansatz.