私はJavaで書いているゲームのために私は開く必要がありますキーボードのxキーを押すとダイアログが表示され、もう一度xキーを押すとダイアログが閉じます。問題は、xキーを押すたびに画面にダイアログが1秒間表示された後、再び表示されなくなることです。これは、キーが1回だけではなく複数回押されていると思われるためと考えられます。同じキーに再度バインドされたアクションを実行する前に、実際にキーを解放する必要があることを確認する方法はありますか?
これは私がキー押下をチェックするのに使用しているものです:
public class KeyManager implements KeyListener {
private boolean[] keys;
public boolean up, down, left, right, enter, x, c;
public KeyManager() {
keys = new boolean[256];
}
public void tick() {
up = keys[KeyEvent.VK_W];
down = keys[KeyEvent.VK_S];
left = keys[KeyEvent.VK_A];
right = keys[KeyEvent.VK_D];
enter = keys[KeyEvent.VK_ENTER];
x = keys[KeyEvent.VK_X];
c = keys[KeyEvent.VK_C];
}
@Override
public void keyPressed(KeyEvent e) {
keys[e.getKeyCode()] = true;
// System.out.println("Pressed");
}
@Override
public void keyReleased(KeyEvent e) {
keys[e.getKeyCode()] = false;
}
@Override
public void keyTyped(KeyEvent e) {
}
}
回答:
回答№1は0Javaはキーが押されたかどうかを "チェック"しないで、キーイベントを監視します。
これに関するドキュメントです。 キーリスナーの書き方
これがSwingアプリケーションの場合 KeyBindings 使用するほうがはるかに良いです。
これは重複した質問だと思います あなたの質問はすでにここに答えがあります