2009-12-03 5 views
2

Si je dessine des cercles à l'aide de Java2D. Y at-il un moyen d'afficher du texte lorsque je survole un des cercles? c'est-à-dire que je veux afficher l'identifiant de ce cercle et d'autres choses.Java 2D. Survoler le cercle

Répondre

0

Vous devrez sauvegarder tous les centres et rayons et les tester par rapport à la position actuelle de la souris.

C'est une opération assez simple. Si la distance entre la position de la souris et le centre de l'un des cercles est plus petite que le rayon, la souris est à l'intérieur et vous pouvez dessiner le message que vous voulez.

il y a une question ici qui montre le calcul: Equation for testing if a point is inside a circle

espoir qui aide ...

Il y a une classe Polygon qui pourrait le faire pour vous (la méthode contient), mais aucun des l'implémentation des classes est un cercle: S

+0

Il vaut mieux utiliser l'équation du cercle (changer == pour <) parce que la vérification de la distance nécessite le calcul de la racine carrée. –

+0

vrai. J'aurais dû dire la distance au carré par rapport au rayon carré: D j'ai pointé l'autre lien de question qui a le code python pour cela: D merci pour la correction: D –

2

Il existe plusieurs façons d'accomplir ce que vous voulez. Ceci est une solution. Je suppose que vous utilisez Ellipse2D pour créer le cercle. Et je suppose que vous dessinez le cercle sur un composant JComponent comme un JPanel.

Vous déclarez donc l'Ellipse. Ensuite, vous implémentez MouseMotionListener pour détecter lorsque l'utilisateur déplace la souris sur JPanel.

public void mouseMoved(MouseEvent e){ 
     if(circle.contains(e.getPoint())){ 
      //the mouse pointer is over the circle. So set a Message or whatever you want to do 
      msg = "You are over circle 1"; 
     }else{ 
      msg = "You are not over the circle"; 
     } 
    } 

ensuite dans la peinture() ou paintComponent (selon celui que vous surchargez faire le tableau):

g2.fill(circle); 
    g2.drawString(msg, 10, 10); //write out the message 
1

Je ne sais pas si vous pouvez le faire directement. Mais vous pouvez utiliser des maths simples pour vérifier la position des curseurs: (x-a)^2 + (y -b)^2 = r^2 où x, y est la position des curseurs a, b est le centre des cercles et r est le rayon.