我有一个JTable,我想在双击单元格时调用函数,并在单击三次单元格时调用另一个函数。Java:检测三击而不触发双击
当单元格被三击时,我不想调用双击函数。
我现在所拥有的是(mgrdAlarm是JTable中):
mgrdAlarm.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
System.out.println("getClickCount() = " + e.getClickCount());
if (e.getClickCount()==2)
{
doubleClick();
System.out.println("Completed : doubleClick()");
}
if (e.getClickCount()==3)
{
tripleClick();
System.out.println("Completed : tripleClick()");
}
}
});
当双击控制台显示:
getClickCount() = 1
getClickCount() = 2
Completed : doubleClick()
当三重点击控制台显示:
getClickCount() = 1
getClickCount() = 2
Completed : doubleClick()
getClickCount() = 3
Completed : tripleClick()
当三击时,我想控制台显示:
getClickCount() = 1
getClickCount() = 2
getClickCount() = 3
Completed : tripleClick()
所以我不想在单元格被三击时调用doubleClick()函数,但是我想在双击单元格时调用函数doubleClick()。
[编辑]
所有回复建议的解决方案似乎是耽误双击动作,等待一定的时间三击。
但正如讨论的here可能会导致不同类型的问题: 用户可能已将其双击时间设置得相当长,这可能与我的三击超时重叠。
如果我的双击动作是在我的三连击动作之前执行的,但它确实会产生一些额外的开销,特别是一些额外的数据流量,我不希望发生这种情况。
作为迄今为止唯一的解决方案可能会导致其他问题,这可能实际上比原始问题更糟糕,我将保留现在的状态。
嗯...延缓执行? –
一个相当有趣的话题,但没有(如此)很容易解决。您可能想要开始阅读http://stackoverflow.com/questions/1067464/need-to-cancel-click-mouseup-events-when-double-click-event-detected。单击和双击提供相同的问题。 您需要在代码中实施一些时间跟踪。 – devnomore
如何实现自定义EventQueue并检测一个,两个或三个点击这里? – 1ac0