Java MouseListener — События
-
22-08-2019 - |
Вопрос
Кто-нибудь знает, является ли следующее ожидаемое поведение с точки зрения того, что MouseEvent
уволены?Кажется, один из них пропал или съеден в другом месте.
Щелкните правой кнопкой мыши
JPanel
и отобразитьJPopupMenu
:MousePressed java.awt.event.MouseEvent[MOUSE_PRESSED, (469,347),absolute(2214,490),button=3,modifiers=Meta+Button3, extModifiers=Button3,clickCount=1] MouseReleased java.awt.event.MouseEvent[MOUSE_RELEASED, (469,347),absolute(2214,490),button=3,modifiers=Meta+Button3, extModifiers=Meta,clickCount=1] MouseClicked java.awt.event.MouseEvent[MOUSE_CLICKED, (469,347),absolute(2214,490),button=3,modifiers=Meta+Button3, extModifiers=Meta,clickCount=1]
Пока все хорошо, все три кнопки от кнопки 3 и в правильном порядке.
С
JPopupMenu
все еще показывает щелчок левой кнопкой мыши где-то вJPanel
не вJPopupMenu
:Что случилось с
MousePressed
событие?MouseReleased java.awt.event.MouseEvent[MOUSE_RELEASED, (452,339),absolute(2197,482),button=1,modifiers=Button1,clickCount=1] MouseClicked java.awt.event.MouseEvent[MOUSE_CLICKED, (452,339),absolute(2197,482),button=1,modifiers=Button1,clickCount=1]
Заранее спасибо.
Решение
Таким образом, событие, вызывающее закрытие всплывающего меню, исчезло.
IIRC, то, как именно это реализовано, изменилось с 1,5 на 1,6.В 1.5 есть стеклопакет, в 1.6 AWTEventListener
используются.Видеть BasicPopupMenuUI
источники для подробностей.Похоже, вы можете (глобально) остановить потребление события с помощью:
UIManager.put("PopupMenu.consumeEventOnClose", false);