1

有谁知道以下是否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某处显示左键单击:JPanelJPopupMenu

    事件发生了什么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]
    

提前致谢。

4

1 回答 1

2

所以导致弹出菜单关闭的事件已经消失了。

IIRC,确切的实现方式从 1.5 更改为 1.6。在 1.5 中有一个玻璃板,在 1.6AWTEventListener秒内使用。有关详细信息,请参阅BasicPopupMenuUI来源。看起来您可以(全局)停止正在使用的事件:

UIManager.put("PopupMenu.consumeEventOnClose", false);
于 2009-05-15T17:43:36.027 回答