我有一个应用程序,您可以在其中按下并拖动鼠标右键(以及左键按下并拖动以进行不同的操作).但是,在
linux上运行时,似乎弹出菜单是由mousePressed而不是mouseReleased触发的.这导致每次按下鼠标右键执行拖动时,弹出菜单都会被触发(与windows不同,它是mouseReleased).
有关如何解决这个问题的任何想法?
谢谢.
编辑:发布代码
// 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所示.
附录:
it appears
isPopupTrigger
is triggered onmousePressed
in linux.
是的,它在Mac OS X上是一样的.您必须从mousePressed()和mouseReleased()调用isPopupTrigger(). GraphPanel
有一个相关的例子.