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这么强大和危险,慎用!