7
votes

Comment détecter la souris en mouvement pendant que le bouton gauche est

Je voudrais détecter la souris en mouvement, tandis que le bouton gauche est enfoncé.

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

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


0 commentaires

4 Réponses :


5
votes

Il y a une méthode Mousedragged dans MousemotionListener ... CHECK Ce Out pour plus de détails ...


5 commentaires

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


@camickr c'est une bonne pratique pour garder les réponses à feuilles persistantes. Cela signifie limiter des liens, comme un jour, ils peuvent se casser et toute la réponse sera discutée. Globalement, cela aurait dû être un commentaire, pas une réponse. C'est la "solution de pile" de faire des réponses être des explications, pas des liens vers des sites de référence et des API.


@Coryb, je pense que je le fais un peu plus longtemps que vous. Cela signifie que limiter les liens, - c'est ce que mon commentaire suggéré. Il n'était pas nécessaire d'inclure le lien.


@camickr ah, je vois ce que tu dis maintenant. Votre premier commentaire est un peu déroutant. Merci pour la clarification. Voyant comment votre commentaire avait 4 ans, j'avais plus de commentaires pour de nouvelles personnes qui pourraient lire cette réponse «correcte» à l'avenir et apprendre de mauvaises pratiques. (En outre, l'utilisation de l'ancienneté est une erreur logique et n'accueille pas aux nouvelles personnes. Bien que je suis flatté que vous preniez le temps de me regarder et de faire le calcul. Restez chic, sucre.)


L'API ne discute clairement pas des clics de boutons ni de l'état du bouton lors du déplacement. Ceci est une réponse trompeuse.



-1
votes

Je pense qu'il peut y avoir une sorte d'auditeur de la souris, mais sinon ...

capturer le bouton de la souris vers le bas et les événements. Dans ces événements, définissez un booléen tel que gaucheButtonisdown = true (sauf s'il y a déjà un moyen facile d'interroger cela), puis dans les événements de mouvement de la souris, utilisez un bloc comme si (gauchebuttonisdique)


0 commentaires

2
votes

Dans votre MousemotionListener, vous pouvez vérifier cela en utilisant:

SwingUtilities.isLeftMouseButton(me.getPoint())


2 commentaires

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


@Donhach, bonne prise. J'allais dire bon "point", mais ce serait faux :) Je laisserai le code comme c'est tout à fait pour que les gens puissent avoir la blague (puisqu'ils utiliseront probablement la réponse Jeffs quand même).



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

2 commentaires

Je ne vois pas la nécessité de cuiller le code d'alimentation comme celui-ci. L'OP vient d'être inversé à pointer dans la bonne direction que vous pouvez dire par la réponse acceptée. L'OP peut demander plus d'aide s'il en a besoin.


Intéressant que la réponse qui n'a pas mentionné comment comprendre quel bouton a été appuyé a été accepté, lorsque la question spécifiée par le bouton gauche est nécessaire. J'ai trouvé cette question via la recherche, et j'en ai vraiment besoin pour être le bouton gauche de la souris comme spécifié dans la question, donc je suscite cette réponse (bien que IseftMouseButton est mal orthographié à partir de cette écriture)