Следующий код работает, когда вы нажимаете одну клавишу.
@Override public void handleEvent(Event evt) {
switch(evt.type) {
case SWT.KeyDown:
System.out.println(evt.keyCode + " pressed");
break;
case SWT.KeyUp:
System.out.println(evt.keyCode + " released");
break;
}
}
...
widget.addListener(SWT.KeyDown, this);
widget.addListener(SWT.KeyUp, this);
Но когда вы нажимаете сначала несколько клавиш, таких как «A», а затем «B», слушатель получит только событие нажатия клавиши «B».и нет событий для "А".Таким образом, в результате ...
switch(evt.type) {
case SWT.KeyDown:
mKeyMap.get(evt.keyCode).isDown = true;
break;
case SWT.KeyUp:
mKeyMap.get(evt.keyCode).isDown = false;
break;
}
Клавиша "A" всегда будет оставаться верной, пока вы не нажмете ее снова и не получите событие нажатия клавиши и событие нажатия клавиши.Эта проблема не происходит с клавишами со стрелками, хотя.Вы можете нажимать несколько клавиш со стрелками, и он правильно отправляет события нажатия клавиш.
Итак, почему при нажатии клавиш «A» и «B» событие «Отпущено» не отправляется для клавиши «A»?