SWT事件到Draw2d事件转化的代码解读

  LightweightSystem内有有一个名EventHandler的内部类。此类实现了大部分的SWT事件的监听接口。
如下:
protected class EventHandler
 implements MouseMoveListener, MouseListener, AccessibleControlListener, KeyListener,
    TraverseListener, FocusListener, AccessibleListener, MouseTrackListener,
    Listener, DisposeListener{
    .....//代码省略
    }
    

即EventHandler类作为监听器注册到LWS的canvas上。
EventHandler监听到感兴趣的事件后,将这些事件交给EventDispatcher,然后EventDispatcher将SWT事件转化为Draw2d事件,最后EventDispatcher将事件转发给各个Figure。
这中间有一个过程是,将SWT事件转化为Draw2d事件,这个转化工作也是交由EventDispatcher来做的。
可通过查看SWTEventDispatcher的源代码,示例:
public void dispatchMouseExited(org.eclipse.swt.events.MouseEvent me) {
 setHoverSource(null, me);
 if (mouseTarget != null) {
  currentEvent =
    new MouseEvent(me.x, me.y, this, mouseTarget, me.button, me.stateMask);//将SWT事件转化为Draw事件
  mouseTarget.handleMouseExited(currentEvent);
  releaseCapture();
  mouseTarget = null;
 }
}

至此,完成了SWT事件到Draw2d事件的转化。同时将其分发给相应的Figure处理(代码体现为mouseTarget.handleMouseExited(currentEvent))。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值