Display 有这么一个方法:
public void addFilter (int eventType, Listener listener)
也就是给Display添加一个全局的监听.比如:上面的为程序定义快捷键Ctrl+a.
这个Display的Filter很强大, 无论当前焦点在哪个控件上,都可以监听这个Ctrl+a的事件.
如果界面中还有其他的控件也监听这个快捷键的话, 那么这个Display中的监听会比其他控件的监听先执行.
下面的代码来自
http://www.vogella.de/articles/SWT/article.htmlDefine a global keylistener for your DisplayYou can define a global keylistener on your display to listen globally to all key events as long as your application has focus. The following demonstrates this.
package de.vogella.swt.listener;
import org.eclipse.swt.SWT;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Event;import org.eclipse.swt.widgets.Listener;import org.eclipse.swt.widgets.Shell;
public class GlobalListener {
public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); shell.open(); display.addFilter(SWT.KeyDown, new Listener() { @Override public void handleEvent(Event event) { char c = event.character; System.out.println(c); } });
while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } }}