SWT 添加全局的监听

Display 有这么一个方法:

 

public void addFilter (int eventType, Listener listener)

 

具体使用代码:

       Display.getDefault().addFilter(SWT.KeyDown, new Listener() {

           public void handleEvent(Event e) {

              if ((e.stateMask == SWT.CTRL) && (e.keyCode == 'a')) {

                  System.out.println("XXXX");

              }

           }

       });

上面的代码给Display添加一个Filter, 这个Filter监听Ctrl+a事件.

 

 

也就是给Display添加一个全局的监听.比如:上面的就是快捷键Ctrl+a.

这个Display的Filter很强大, 无论当前焦点在哪个控件上,都可以监听这个Ctrl+a的事件.

 

如果界面中还有其他的控件也监听这个快捷键的话, 那么这个Display中的监听会比其他控件的监听先执行.

 

正由于Display的Filter比其他的监听先执行, 所以, 还更强大的功能就是: 你可以在handleEvent中阻拦event的向下传递[通知其他的监听者], 或者, 任意修改event的属性.

 

正由于Display的Filter这么强大和危险,慎用!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值