您的位置:首页 > 其它

SWT:Define a global keylistener for your Display

2011-02-14 00:43 232 查看
Display 有这么一个方法:

public void addFilter (int eventType, Listener listener)

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

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

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

下面的代码来自

http://www.vogella.de/articles/SWT/article.html
Define a global keylistener for your Display
You 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();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐