2006年12月19日星期二

GEF中无法获得MouseRelease和MouseDoubleClick事件的原因

调试了一下程序,发现MouseRelease事件还是产生了的,只是到了GEF这一层就开始变了
DomainEventDispatcher的dispatchMousePressed()中设置了editorCaptured标志为true,当执行dispatchMouseReleased时通过判断发现此标志为true,就不会将MouseEvent发送到Figure了,它这样做应该是为了将mouseReleased变为判断Drog落下或者DirectEdit的标志,也就是变成了Request发送到EditPart去了,所以不发送给Figure。

我是这样解决的:
通过在figure的mousePressed事件中将MouseEvent.consume(),这样MouseEvent就不会传递到Editor中,这样下次就会直接传递到Figure了。

没有评论: