Pergunta

Será que qualquer saber se o seguinte é a comportamentos esperados em termos do que MouseEvents são disparados? Uma parece estar faltando ou consumidos em outro lugar.

  1. Clique com o botão direito do mouse sobre JPanel e exibição 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]
    

    Até aí tudo bem tudo 3 de botão 3 e na ordem correta

  2. Com JPopupMenu ainda mostrando-clique esquerdo em algum lugar no JPanel não no JPopupMenu:

    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.

Foi útil?

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 AWTEventListeners 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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top