SWT:如果没有Control有焦点,你如何注册KeyUp事件?

时间:2010-03-23 10:13:11

标签: events swt onkeyup

我正在制作一个需要在Linux和Windows上运行的Java SWT程序。

我使用以下代码来侦听KeyUp事件:

Control.addListener(SWT.KeyUp, new Listener() {

public void handleEvent(Event arg0) {
 System.out.println("Event");

}

});

但是当没有控件具有焦点时,这不会触发。

有人知道我可以添加一个充当Catch-all的监听器吗?

3 个答案:

答案 0 :(得分:1)

我所知道的唯一方法是在显示屏上放置过滤器。请注意,多个外壳可能在一个显示器上运行,因此您应该小心!

shell.getDisplay().addFilter(SWT.KeyDown, new Listener() {
    public void handleEvent(final Event event) {
        System.out.println(event);
    }
});

答案 1 :(得分:0)

在Display类中尝试以下方法:

public void addListener ( int eventType, Listener listener ) 

答案 2 :(得分:-1)

我一直无法找到解决方法。我怀疑不存在