有谁知道以下是否是预期行为 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]
    

提前致谢。

有帮助吗?

解决方案

这样导致弹出菜单关闭的事件就消失了。

IIRC,具体实现方式从 1.5 更改为 1.6。1.5中有一块玻璃板,1.6中有一块玻璃板 AWTEventListeners 被使用。看 BasicPopupMenuUI 详细信息来源。看来您可以(全局)停止使用以下事件:

UIManager.put("PopupMenu.consumeEventOnClose", false);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top