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
Lepaskan: 2024-12-06 00:07:10
asal
728 orang telah melayarinya

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;
Salin selepas log masuk

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;
    }
  }
});
Salin selepas log masuk

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;
  }
}
Salin selepas log masuk

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.
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan