Hello tout le monde...
Je cherche un moyen pour ajouter un listener sur la souris (pour détecter la souris quand elle passe une zone que j'ai dessiner dans le paintComponent())
Est ce qu'il existe une solution simple ?
Merci d'avance
Hello tout le monde...
Je cherche un moyen pour ajouter un listener sur la souris (pour détecter la souris quand elle passe une zone que j'ai dessiner dans le paintComponent())
Est ce qu'il existe une solution simple ?
Merci d'avance
Tu peut utiliser un MouseMotionListener sur ton JPanel. Tu detecte l'évenement mouseMoved et a partir du MouseEvent tu teste les coordonnées de la souris pour voir si elle est ou non dans ta zone
Un truc plus simple ma foi est l'interface MouseListener qui définit directement une méthode mouseEntered, appellée automatiquement quand ta souris passe au dessus du composant sur lequel a été ajouté le listener.
Oui mais si c'est seulement une zone du JPanel un simple MouseListener ne suffira pas.
Ouais c'est ce que je pensais faire mais il me semblait qu'il avait un moyen plus simple...Envoyé par guigui5931
Non ?
Dans ton JPanel, tu fais setLayout(null), et tu ajoutes un nouveau JPanel qui correspondra exactement à ta zone "cliquable", et comme ça tu n'as pas à tester si tu es dans la bonne zoneEnvoyé par guigui5931
![]()
Ou sinon tu crées un objet Shape au lieu de dessiner directement sur un JPanel, cette Shape correspondant à la zone voule puis tu dessines la shape sut ton JPanel au moyen de la méthode draw ou fill de Graphics2D.
Par la suite tu gardes ta Shape en tant qu'attribut de ta classe.
Le point intéressant est que la classe Shape contient une méthode contains qui permet de dire si un point se trouve dans celle ci ou non.
Donc dans le mouseListener du panel tu as juste un appel à faireou
Code : Sélectionner tout - Visualiser dans une fenêtre à part shape.contains(x,y);et réagir en fonction du résultat renvoyé
Code : Sélectionner tout - Visualiser dans une fenêtre à part shape.contains (new Point2D.Float(x,y));
Partager