Java MouseListener - Eventos
-
22-08-2019 - |
Pergunta
Será que qualquer saber se o seguinte é a comportamentos esperados em termos do que MouseEvent
s são disparados? Uma parece estar faltando ou consumidos em outro lugar.
-
Clique com o botão direito do mouse sobre
JPanel
e exibiçãoJPopupMenu
: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]
Até aí tudo bem tudo 3 de botão 3 e na ordem correta ??p>
-
Com
JPopupMenu
ainda mostrando-clique esquerdo em algum lugar noJPanel
não noJPopupMenu
:O que aconteceu com o evento
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]
Agradecemos antecipadamente.
Solução
Assim, o evento que faz com que o menu pop-up para perto desapareceu.
IIRC, exatamente como isso é implementado mudou 1,5-1,6. Em 1,5 há um glasspane, em 1,6 AWTEventListener
s são utilizados. Veja fontes BasicPopupMenuUI
para detalhes. Parece que você pode (globalmente) parar o evento que está sendo consumido com:
UIManager.put("PopupMenu.consumeEventOnClose", false);