【发布时间】:2010-10-07 14:02:06
【问题描述】:
谁能想到一个好方法来忽略 Java 中的双击带来的单击?
我希望每个人都有不同的行为:
- 单击在点击点上绘制十字准线
- 双击选择屏幕上的一个对象,但应该不在点击点上绘制十字准线
...谁能想到办法做到这一点?某种计时器设置可能吗?一个想法表示赞赏:-)
编辑#2:
即使这样有效,由于计时器导致的延迟令人抓狂 - 我放弃了这个解决方案,并使用中键单击而不是双击进行选择...
编辑:
感谢cgull - 这是我能够提出的,因为您确认没有简单的方法可以做到这一点(请注意,如果我将计时器设置为 200 的值,一切都会正常工作):
public void mouseClicked(MouseEvent e) {
System.out.println( "Click at (" + e.getX() + ":" + e.getY() + ")" );
if (e.getClickCount() == 2) {
System.out.println( " and it's a double click!");
wasDoubleClick = true;
}else{
Integer timerinterval = (Integer)
Toolkit.getDefaultToolkit().getDesktopProperty(
"awt.multiClickInterval");
timer = new Timer(timerinterval.intValue(), new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (wasDoubleClick) {
wasDoubleClick = false; // reset flag
} else {
System.out.println( " and it's a simple click!");
}
}
});
timer.setRepeats(false);
timer.start();
}
}
【问题讨论】:
-
这如何工作? wasDoubleClick 不能是最终的,它在另一个类(匿名 ActionListener 类)中使用
标签: java events click mouse double-click