Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Memantau Penekanan Kekunci Khusus secara Berterusan di Java?

Bagaimanakah Saya Boleh Memantau Penekanan Kekunci Khusus secara Berterusan di Java?

DDD
DDDasal
2024-12-06 00:07:10713semak imbas

How Can I Continuously Monitor Specific Key Presses in Java?

Memantau Ketukan Kekunci Pengguna secara Berterusan di Java

Dalam senario ini, matlamatnya adalah untuk sentiasa menyemak sama ada pengguna sedang menekan kekunci tertentu, seperti sebagai kekunci "w".

Tidak seperti bahasa lain, Java tidak mempunyai fungsi asli untuk memeriksa secara terus tekanan kekunci. Sebaliknya, ia menggunakan pendekatan berasaskan pendengar untuk mengendalikan peristiwa penting.

Penyelesaian: KeyEventDispatcher

Untuk memantau peristiwa penting dengan berkesan, Java menyediakan kelas KeyEventDispatcher. Kelas ini membolehkan anda menambah pendengar pada baris gilir acara Java AWT (Abstract Window Toolkit) dan menerima pemberitahuan apabila sebarang kekunci ditekan atau dilepaskan.

Pelaksanaan:

  1. Isytiharkan Boolean Peringkat Kelas Pembolehubah:
private static volatile boolean wPressed = false;

Pembolehubah ini akan menunjukkan jika kekunci "w" sedang ditekan.

  1. Buat 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;
    }
  }
});

Kelas tanpa nama ini mengatasi kaedah dispatchKeyEvent untuk mengendalikan peristiwa penting.

  1. Kaedah untuk Menyemak Tekan Kekunci:
public static boolean isWPressed() {
  synchronized (IsKeyPressed.class) {
    return wPressed;
  }
}

Kaedah ini menyegerakkan pada objek kelas untuk memastikan urutan keselamatan dan mengembalikan nilai wPressed pembolehubah.

  1. Menggunakan Fungsi:
if (IsKeyPressed.isWPressed()) {
  // Execute actions when the "w" key is pressed.
}

Dengan menggunakan pendekatan ini, anda boleh terus memantau peristiwa penting dan melakukan tindakan khusus berdasarkan menekan kekunci.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memantau Penekanan Kekunci Khusus secara Berterusan di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn