2011-11-04 4 views
6

J'essaie de dessiner des polygones et j'aimerais pouvoir cliquer sur mon cadre pour obtenir les coordonnées de la souris de manière à transformer plus rapidement une image mentale en valeurs x/y.Coordonnées de la souris par rapport à l'image

J'utilise

System.out.println("("+ MouseInfo.getPointerInfo().getLocation().x +", 
    "+ MouseInfo.getPointerInfo().getLocation().y +")"); 

mais cela me donner les coordonnées par rapport à mon écran réel, et non ma fenêtre java.

Comment puis-je faire apparaître les coordonnées relatives à la fenêtre Java?

Répondre

4

Je suppose que vous ajoutez un MouseListener à votre cadre? Ensuite, vous pouvez simplement obtenir les coordonnées relatives à MouseEvent.getPoint

frame.addMouseListener(new MouseAdapter() { 
    void mouseClicked(MouseEvent e) { 
     System.out.println(e.getPoint()); 
    } 
}); 
+0

Cela fonctionne, mais cela ne me donne pas les coordonnées correctes. Pour le tester j'ai dessiné un carré à x = 50 et 7 = 50 (g.drawRect (50,50,100,100)); et quand j'ai cliqué sur le coin supérieur gauche du carré, cela m'a sauvé x = 58 et y = 78 (java.awt.Point [x = 58; y = 78]) – Nyst

+0

C'est parce que vous obtenez les coordonnées de la souris par rapport au JFrame mais vous ne peignez pas directement sur le cadre. Vous peignez probablement sur un JPanel que vous avez ajouté au JFrame. Cela signifie que vous devez ajouter le MouseListener à ce JPanel pour obtenir les bonnes coordonnées. – SpiderPig

+0

mon mauvais, j'ai eu le cadre et le panneau confus, il est maintenant fixé – Nyst

13

Vous pouvez convertir entre l'écran et la composante coordonnées à l'aide de la classe SwingUtilties

La méthode convertPointFromScreen prendra un écran de coordonner et de le convertir en être par rapport à le composant que vous fournissez.

+0

très bonne suggestion +1 – mKorbel

Questions connexes