我有一个 JTable,我想在双击单元格时调用一个函数,并在三次单击单元格时调用另一个函数。
当单元格被三次单击时,我不想调用双击函数。
我现在拥有的是(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()。
[编辑]
正如所有回复所暗示的那样,解决方案似乎是延迟双击动作并等待一定时间进行三次单击。
但正如这里所讨论的那样,这可能会导致不同类型的问题:用户可能将他的双击时间设置得很长,这可能与我的三次单击超时重叠。
如果我的双击操作在我的三次单击操作之前执行,这并不是真正的灾难,但它确实会产生一些额外的开销,尤其是一些我想阻止的额外数据流量。
由于到目前为止唯一的解决方案可能会导致其他问题,这实际上可能比原来的问题更糟糕,所以我将保持原样。