Java MouseListener - События - PullRequest
1 голос
/ 15 мая 2009

Кто-нибудь знает, является ли следующее ожидаемое поведение в отношении того, что запускается MouseEvent? Один, кажется, отсутствует или потребляется в другом месте.

  1. Щелкните правой кнопкой мыши 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 с кнопки 3 и в правильном порядке

  2. С 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]
    

Заранее спасибо.

1 Ответ

2 голосов
/ 15 мая 2009

Таким образом, событие, приводящее к закрытию всплывающего меню, исчезло.

IIRC, как именно это реализовано, изменено с 1,5 на 1,6. В 1.5 есть стекло, в 1.6 AWTEventListener с. См. BasicPopupMenuUI источники для деталей. Похоже, что вы можете (глобально) остановить событие, потребляемое с помощью:

UIManager.put("PopupMenu.consumeEventOnClose", false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...