Вопрос

Кто-нибудь знает, является ли следующее ожидаемое поведение с точки зрения того, что 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 и в правильном порядке.

  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]
    

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

Это было полезно?

Решение

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

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

UIManager.put("PopupMenu.consumeEventOnClose", false);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top