سؤال

هل يعرف أحد ما إذا كان ما يلي هو السلوكيات المتوقعة من حيث ماذا 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