2010-12-14 98 views
6

Je voudrais détecter le déplacement de la souris, tandis que le bouton gauche est enfoncé.Comment détecter la souris en bougeant le bouton gauche?

Je crée simplement une application de dessin. Je peux détecter le mouvement de la souris sans aucune souris. Mais je veux détecter avec la souris gauche appuyée.

Je pense qu'il n'y a pas d'écouteur pour cela. Alors, quelle est l'idée de faire ça?

Répondre

5

il y a la méthode mouseDragged dans MouseMotionListener ... vérifier this pour plus de détails ...

+4

@Stephen P, j'ai accidentellement upvoted votre commentaire parce que je l'ai mal lu. Il n'y a absolument pas besoin de résumer l'API ici. C'est une perte de temps car c'est ce que l'API est pour. Tout le PO nécessaire devait être pointé dans la bonne direction. En fait, mentionner simplement la classe et la méthode est une excellente réponse. Les gens devraient toujours avoir accès à l'API pour le lire pour les détails. – camickr

+0

est d'accord avec camickr – hologram

+0

@camickr Il est recommandé de garder les réponses à feuillage persistant. Cela signifie limiter les liens, car un jour ils peuvent casser et toute la réponse sera discutable. Dans l'ensemble, cela aurait dû être un commentaire, pas une réponse. C'est le "cheminement" pour que les réponses soient des explications, pas des liens vers des sites de référence et des API. –

-1

Je pense qu'il pourrait y avoir une sorte d'écouteur de glisser la souris, mais sinon ...

Capture the bouton de la souris vers le bas et vers le haut des événements. Dans ces événements, définir un booléen tel que leftButtonIsDown = true (sauf si il y a déjà une façon simple de requête), puis dans les événements de mouvement souris utilisent un bloc comme if (leftButtonIsDown)

2

Dans votre MouseMotionListener vous pouvez vérifier cela en utilisant:

SwingUtilities.isLeftMouseButton(me.getPoint()) 

et vous écoutez l'événement mouseDragged.

+1

vous l'avez surtout ici , mais je viens de développer dans ma réponse –

+0

il devrait être appelé sur le MouseEvent, pas sur le point –

+0

@DonHatch, bonne prise. J'allais dire bon "point", mais ce serait faux :) Je vais laisser le code tel qu'il est juste pour que les gens puissent obtenir la blague (puisqu'ils utiliseront probablement la réponse de Jeff de toute façon). – camickr

16
component.addmouseMotionListener(new MouseAdapter() { 
    public void mouseDragged(MouseEvent evt) { 
     if (SwingUtilities.isLeftMouseButton(evt)) { 
     // do your stuff here 
     } 
    } 
}); 
+0

Je ne vois pas le besoin de placer un code de flux comme ceci. L'OP vient juste d'être pointé dans la bonne direction, comme vous pouvez le voir par la réponse qui a été acceptée. Le PO peut demander plus d'aide s'il en a besoin. – camickr

+0

Intéressant que la réponse qui n'a pas mentionné comment savoir quel bouton a été pressé a été acceptée, quand la question a précisé que le bouton gauche de la souris est nécessaire. J'ai trouvé cette question via la recherche, et j'ai vraiment besoin d'être le bouton gauche de la souris comme spécifié dans la question, donc je suis upvoting cette réponse (bien que isLeftMouseButton soit mal orthographié à ce jour) –