KeyListener 只有在 Button 被点击后才开始监听
KeyListener starts listening only after Button is clicked
目前我正在尝试将 MKYong 的 KeyListener example 集成到 Eclipse RCP 应用程序中。
我在 Button
注册 KeyListener
时出现一些奇怪的行为,它仅在第一次单击按钮后才开始侦听键盘输入。
我希望它监听创建后发生的所有键盘事件。对我来说,我必须使用哪种 SWT Control
是无关紧要的。
如有任何想法,我们将不胜感激。
控件仅在具有键盘焦点时才获取按键事件。
如果你想得到所有按键事件你可以使用Display
的addFilter
方法
Display.getDefault().addFilter(SWT.KeyDown, new Listener() {
public void handleEvent(Event event)
{
// Handle key down event
}
});
您已将 KeyListener 添加到 Button。按钮在获得焦点时会收到 keyEvent 通知。如果您想在整个 window 中监听键盘事件,请将 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);
目前我正在尝试将 MKYong 的 KeyListener example 集成到 Eclipse RCP 应用程序中。
我在 Button
注册 KeyListener
时出现一些奇怪的行为,它仅在第一次单击按钮后才开始侦听键盘输入。
我希望它监听创建后发生的所有键盘事件。对我来说,我必须使用哪种 SWT Control
是无关紧要的。
如有任何想法,我们将不胜感激。
控件仅在具有键盘焦点时才获取按键事件。
如果你想得到所有按键事件你可以使用Display
addFilter
方法
Display.getDefault().addFilter(SWT.KeyDown, new Listener() {
public void handleEvent(Event event)
{
// Handle key down event
}
});
您已将 KeyListener 添加到 Button。按钮在获得焦点时会收到 keyEvent 通知。如果您想在整个 window 中监听键盘事件,请将 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);