目前我正在尝试将MKYong的KeyListener example集成到Eclipse RCP应用程序中。
我从注册Button
的{{1}}获得了一些奇怪的行为,它只是在第一次点击按钮后才开始听键盘输入。
我希望能听到创建后发生的所有键盘事件。对我而言,我必须使用什么样的SWT KeyListener
无关紧要。
任何想法都表示赞赏。
答案 0 :(得分:2)
控件仅在具有键盘焦点时才会获得关键事件。
如果您想获取所有重要事件,可以使用addFilter
Display
方法
Display.getDefault().addFilter(SWT.KeyDown, new Listener() {
public void handleEvent(Event event)
{
// Handle key down event
}
});
答案 1 :(得分:1)
您已将KeyListener添加到Button。当焦点获得焦点时,按钮会被通知keyEvent。如果要在整个窗口中侦听键盘事件,请将KeyListener添加到shell:
shell.addKeyListener(new KeyAdapter()...
如果要全局KeyListener添加显示过滤器:
Listener listener = new Listener() {
@Override
public void handleEvent(Event e) {
if(e.type == SWT.KeyDown||e.type == SWT.KeyUp) {
System.out.println("" + e.keyCode);
}
}
};
display.addFilter(SWT.KeyDown, listener);
display.addFilter(SWT.KeyUp, listener);