SWT KeyUp事件侦听器未命中密钥

时间:2013-02-19 23:31:50

标签: java swt keylistener

我有以下代码:

display.addFilter(SWT.KeyUp, new Listener()
{
    public void handleEvent(Event e)
    {
        System.out.println("Released " + e.character);
    }
};

当我同时按下'a','s','d'和'f'键时,KeyDown事件按预期工作。但是,当我同时释放所有键时,我希望输出类似于:

发布了一个 发布了 发布了d 发布了f

但事实并非如此。打印出的内容通常只有一个字符,例如:

发布了d

为什么要跳过其他两三个事件?

1 个答案:

答案 0 :(得分:2)

这是bug

  

错误50020 - KeyReleased无法正常工作
  在下列情况下,KeyReleased似乎没有正确触发或根本没有触发:   连续按下几个键并按下。钥匙一个接一个   被释放。 keyReleased事件触发但event.character始终是   按下的最后一个键。如果释放了按下的最后一个键,则全部   其他键在释放时不会触发释放的事件。

该bug可能永远不会得到修复(bugtracker条目中的注释#1):

  

评论#1   这是一个很老的错误,我们可能无法修复。问题是   在Window中没有足够的信息来计算密钥   在WM_KEYUP中按下了。