次のコードは、単一キーを押すと機能します。あなたは「」最初「B」のような複数のキーを押したとき2つのキーが押されたときにキーリリースイベントが送信されないのはなぜですか?
@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);
しかし、リスナーは唯一の「B」と「A」のためのイベントなしで最大のキーイベントを受信します。その結果、...
switch(evt.type) {
case SWT.KeyDown:
mKeyMap.get(evt.keyCode).isDown = true;
break;
case SWT.KeyUp:
mKeyMap.get(evt.keyCode).isDown = false;
break;
}
キー「」いつもあなたは再びそれを押すまで、真のまま、キーダウンイベントとキーアップイベントを受け取ります。しかし、この問題は矢印キーでは起こりません。複数の矢印キーを押すと、キーアップイベントが正しく送信されます。
なぜ、キー "A"と "B"を押したときに、キー "A"に対してキーリリースイベントが送られないのですか?