Si j'ai deux boutons de la souris enfoncés, faites glisser la souris, puis relâchez l'un des boutons, comment puis-je déterminer quel bouton a été relâché? Les boutons maintenus sont récupérables avec un MouseEvent.getModifiersEx(), mais il ne semble pas y avoir de moyen de savoir lequel a été libéré, puisque tous les boutons pressés avant les déclencheurs d'événement sont stockés dans ce masque:Java AWT: Comment savoir quel bouton de la souris a été libéré après un événement mouseDragged?
public void mouseReleased(MouseEvent e) {
int b1 = MouseEvent.BUTTON1_DOWN_MASK;
int b2 = MouseEvent.BUTTON2_DOWN_MASK;
System.out.println(e.getButton()) // prints "0" when the mousereleased
// event follows a mouseDragged
// event
if ((mouseEvent.getModifiersEx() & b1) == b1) {
System.out.println("button 1 released");
} else if ((mouseEvent.getModifiersEx() & b2) == b2) {
System.out.println("button 2 released");
}
/*
Following a mouseDragged event, assuming button 1 and button 2
were pressed before either was released, the first if clause
evaluates to true regardless of which button was actually released.
In other words, releasing button 2 in this scenario will print
"button 1 released"
*/
}
il est facile si l'événement mouseReleased est précédée d'un événement mousePressed, mais quand il est précédé par mouseDragged, je ne peux pas simplement appeler getButton() ...
Veuillez poster votre meilleure tentative [mcve] pour nous montrer comment votre code *** fonctionne *** correctement. –
Avez-vous essayé 'SwingUtilities # isLeftMouseButton' et' isRightMouseButton'? –
@HovercraftFullOfEels Merci pour vos commentaires. J'ai remplacé le bloc de code abstrait par un bloc concret pour mieux illustrer ma question. – DayTripperID