Java でユーザーのキーストロークを継続的に監視する
このシナリオの目標は、ユーザーが特定のキーを押しているかどうかを常に確認することです。
他の言語とは異なり、Java にはキーの押下を直接確認するためのネイティブ関数がありません。代わりに、キー イベントを処理するためにリスナー ベースのアプローチが採用されています。
解決策: KeyEventDispatcher
キー イベントを効果的に監視するために、Java は KeyEventDispatcher クラスを提供します。このクラスを使用すると、Java AWT (Abstract Window Toolkit) イベント キューにリスナーを追加し、キーが押されるか離されたときに通知を受け取ることができます。
実装:
private static volatile boolean wPressed = false;
この変数は、「w」キーが押されているかどうかを示します。
KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() { @Override public boolean dispatchKeyEvent(KeyEvent ke) { synchronized (IsKeyPressed.class) { switch (ke.getID()) { case KeyEvent.KEY_PRESSED: if (ke.getKeyCode() == KeyEvent.VK_W) { wPressed = true; } break; case KeyEvent.KEY_RELEASED: if (ke.getKeyCode() == KeyEvent.VK_W) { wPressed = false; } break; } return false; } } });
この匿名クラスキーイベントを処理するためにdispatchKeyEventメソッドをオーバーライドします。
public static boolean isWPressed() { synchronized (IsKeyPressed.class) { return wPressed; } }
このメソッドは、クラスオブジェクトと同期します。スレッドの安全性を確保し、wPressed の値を返します。
if (IsKeyPressed.isWPressed()) { // Execute actions when the "w" key is pressed. }
このアプローチを使用すると、主要なイベントを継続的に監視し、それに基づいて特定のアクションを実行できます。キーを押します。
以上がJava で特定のキーの押下を継続的に監視するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。