我有一个应用程序,您可以在其中进行鼠标右键单击和拖动(以及进行不同操作的左键单击和拖动)。但是,在Linux上运行此命令时,似乎弹出菜单是由mousePressed而不是mouseReleased触发的。这导致每次我按下鼠标右键进行拖动时,都会触发弹出菜单(与Windows不同,它是mouseReleased的窗口)。

有关如何解决此问题的任何想法?

谢谢。

编辑: zip

弹出菜单代码

// this is called from mousePressed and mouseReleased
if (e.isPopupTrigger() && !e.isConsumed()) {
    // show the popup menu
}

此代码是在鼠标右键单击/拖动时所谓的代码(这是第三方代码,但它是开放源代码,因此我可以根据需要进行更改)
// this is called on all mouse events
if (buttonAction.mouseButton != 0)
{
    // handle the event
}

最佳答案

是的,使用isPopupTrigger(),如here所示。

附录:



是的,在Mac OS X上是相同的。您必须同时从isPopupTrigger()mousePressed()调用mouseReleased() GraphPanel 中有一个相关的示例。

10-02 22:21