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

你可能感兴趣的:(eclipse)