对于以下各项:
private class LabelViewMouseListener extends MouseAdapter
{
private Camera ivCamera;
private LabelViewMouseListener( Camera camera )
{
ivCamera = camera;
}
@Override
public void mouseDoubleClick( MouseEvent e )
{
startCameraViewer( ivCamera );
}
@Override
public void mouseUp( MouseEvent e )
{
ivCamera.getPopupMenu().setVisible( true );
}
}
这个想法是一次点击就可以得到菜单,而双击就可以启动查看器。
当鼠标“点击”时,mouseup事件触发。这将打开弹出菜单。菜单将自身定位在鼠标指针下,因此双击不会注册为第二次单击现在被菜单吸收。如果我动作很快,只需轻轻地抽动一下鼠标,我有时就可以让鼠标上的鼠标点着。
除了将特殊的点击功能移植到我的用户上,我怎样才能让它按预期工作?
2条答案
按热度按时间vs3odd8k1#
好吧,我补充说:
给老鼠。它仍然不起作用,除了几乎是偶然的。这就好像一旦鼠标事件被触发,第二个事件大部分被丢弃,但有时会通过。
叹气。
我拿出鼠标垫,加了一句
到鼠标顶端,这至少有一个好处是行动一致。
zpgglvta2#
1.我觉得你重写mousedoubleclick和mouseup很奇怪,因为它们不是mouseadapter的方法。除非您使用的库与“java.awt.event”不同。
如果您只想在双击时激活一个操作(而不触发一键操作),一般的想法是您需要设置一个计时器来延迟触发事件。
这个问题已经在下面的链接中讨论过了,您可以查看一下:
java:检测三次点击而不触发双击
在java中区分单击和双击
编辑:似乎您正在使用
SWT
,不是AWT
所以我的答案无关紧要。我会把这个放在这里,以防万一有人和我一样犯同样的错误。