在我的应用程序中,我在处理KeyDown事件的显示中添加了一个过滤器。 当应用程序在Windows上运行时,它工作正常,但现在我试图在Linux上运行它,它不会检测到按键事件。
任何想法可能是什么问题?
代码有点乱,所以我现在只添加大纲。
answerListener = new Listener() {
@Override
public void handleEvent(Event event) {
...
};
Display.getDefault().addFilter(SWT.KeyDown, answerListener);
该应用程序是一个琐事游戏,当我在游戏屏幕中按一个键时,我应该有4秒钟来选择答案。因此,只有在按下键之前,才会启用答案按钮。 屏幕上有3个主要的SWT组合。带有答案按钮的组,带有文本字符串的列表,以及屏幕左侧的另一个组。
当我用鼠标按下字符串列表然后我按下一个键,一个小文本框(你可以看到图片),弹出我按下的键字符号,但答案仍然被禁用。
屏幕上出现文本框4秒钟然后消失 当我在之前点击任何其他组时,小窗口不会弹出,但答案组再次被禁用。
在Windows上,没有出现这些症状。游戏可以正常运作。