Question

J'ai un JPanel, que je voudrais détecter les événements suivants

(1) Lorsque le mouvement de la souris dans

(2) Lorsque la souris se déplacer sur

Le (1) est facile et rapide. (2) est un peu difficile. À l'heure actuelle, je dois vous inscrire à l'événement tous les composants autour JPanel. Si le voisin autour JPanel détecté un mouvement de la souris dans l'événement, cela signifie aussi que la situation JPanel est d'avoir (2). Cependant, cela est un peu sale loin, comme j'ajouter de nouveaux composants dans l'avenir, cette solution de contournement sale va se rompre.

Une autre méthode est d'avoir une minuterie pour surveiller la JPanel. Si la position de la souris ne relève pas de JPanel en quelques secondes x, je peux considérer JPanel est d'avoir la souris sortir événement.

Cependant, cela semble une façon sale pour moi aussi, comme ayant une minuterie séparée pour effectuer cette tâche commune est surpuissant.

Y at-il une meilleure façon, quelle plate-forme Java peut fournir?

Était-ce utile?

La solution

Demandez à votre classe implémente MouseListener et l'ajouter en tant qu'auditeur de la souris sur le panneau externe. Vous devriez obtenir un événement entrée de la souris lorsque la souris se déplace sur le panneau, et est sorti de la souris quand il quitte; quelles que soient les composants du panneau contient.

De la JavaDoc:

  

vide mouseEntered (MouseEvent e)            Invoqué lorsque la souris entre un composant.

     

vide mouseExited (MouseEvent e)            Invoqué lorsque la souris sort d'un composant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top