>Java >java지도 시간 >Java에서 특정 키 누르기를 지속적으로 모니터링하려면 어떻게 해야 합니까?

Java에서 특정 키 누르기를 지속적으로 모니터링하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-12-06 00:07:10691검색

How Can I Continuously Monitor Specific Key Presses in Java?

Java에서 사용자 키 입력을 지속적으로 모니터링

이 시나리오의 목표는 사용자가 다음과 같은 특정 키를 누르고 있는지 지속적으로 확인하는 것입니다.

다른 언어와 달리 Java에는 키 누름을 직접 확인하는 기본 기능이 없습니다. 대신, 주요 이벤트를 처리하기 위해 리스너 기반 접근 방식을 사용합니다.

해결책: KeyEventDispatcher

주요 이벤트를 효과적으로 모니터링하기 위해 Java는 KeyEventDispatcher 클래스를 제공합니다. 이 클래스를 사용하면 Java AWT(Abstract Window Toolkit) 이벤트 큐에 리스너를 추가하고 키를 누르거나 놓을 때 알림을 받을 수 있습니다.

구현:

  1. 클래스 수준 부울 선언 변수:
private static volatile boolean wPressed = false;

이 변수는 "w" 키를 눌렀는지 여부를 나타냅니다.

  1. KeyEventDispatcher 만들기:
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 메서드를 재정의합니다. 키 이벤트를 처리합니다.

  1. 키 누름 확인 방법:
public static boolean isWPressed() {
  synchronized (IsKeyPressed.class) {
    return wPressed;
  }
}

이 방법은 클래스 개체를 동기화하여 스레드 안전을 보장하고 wPressed의 값을 반환합니다. 변수.

  1. 함수 사용:
if (IsKeyPressed.isWPressed()) {
  // Execute actions when the "w" key is pressed.
}

이 접근 방식을 사용하면 주요 이벤트를 지속적으로 모니터링하고 다음을 기반으로 특정 작업을 수행할 수 있습니다. 키를 누릅니다.

위 내용은 Java에서 특정 키 누르기를 지속적으로 모니터링하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.