Obsługuję niektóre MouseEvent w aplikacji GUI za pomocą Java Swing.Wykrywanie modyfikatorów Shift na MouseEvent generowanych po kliknięciu swing
Od tego czasu analizowałem zdarzenia myszy za pomocą metody mousePressed, aby stwierdzić, czy nastąpiło kliknięcie lewym lub prawym przyciskiem myszy: .
Mój kod to:
public void mousePressed(MouseEvent me) {
if (me.getModifiers == InputEvent.BUTTON1_DOWN_MASK){
//left click
}else if (me.getModifiers == InputEvent.BUTTON3_DOWN_MASK){
//right click
}
Teraz moja aplikacja staje się coraz bardziej skomplikowane i trzeba również sprawdzić, czy został naciśnięty przycisk SHIFT podczas gdy mysz lewym przyciskiem myszy. chciałbym zrobić coś takiego:
public void mousePressed(MouseEvent me) {
if (me.getModifiers == InputEvent.BUTTON1_DOWN_MASK && me.isShiftDown()){
//left click
}
Teraz to nie działa. W szczególności jeśli kliknę lewy przycisk, przytrzymując SHIFT, to SHiftDown zwróci true (prawidłowość, której się spodziewałem), ale teraz wydaje się, że modyfikatory również zostały zmienione, a porównanie z BUTTON1_DOWN_MASK zakończyło się niepowodzeniem.
me.getModifiers == InputEvent.BUTTON1_DOWN_MASK //failed..modifiers are changed
Co robię źle? Jak mogę naprawić swój kod?
masz rację. W każdym razie twój kod (me.getModifiers() i InputEvent.BUTTON1_DOWN_MASK) nie zwraca boolean – Heisenbug
Przepraszam, masz rację. Teraz naprawiony. –
Przepraszam. Jestem nieco zdezorientowany. Wydaje się działać dokładnie odwrotnie: (me.getModifiers() i InputEvent.BUTTON1_DOWN_MASK) == 0. W każdym razie ... masz rację. dzięki – Heisenbug