Rumah > Java > javaTutorial > Mengapa Pendengar Kunci JFrame Saya Tidak Menjawab?

Mengapa Pendengar Kunci JFrame Saya Tidak Menjawab?

Barbara Streisand
Lepaskan: 2024-11-13 13:25:02
asal
517 orang telah melayarinya

Why Isn't My JFrame's KeyListener Responding?

Pendengar Kunci Tidak Responsif untuk JFrame: Membuka Kunci Interaktiviti Papan Kekunci

Dalam usaha anda untuk melaksanakan KeyListener untuk JFrame anda, anda menghadapi isu yang membingungkan di mana KeyListener nampaknya tidak bertindak balas, walaupun betul berdaftar.

Teka-teki Fokus

Kecurigaan awal anda bahawa tumpuan bukan pada JFrame adalah tanggapan yang salah. Secara lalai, JFrame mempunyai fokus apabila ia kelihatan. Walau bagaimanapun, ia patut disemak semula dengan memanggil requestFocus() pada JFrame.

Memperkenalkan KeyEventDispatcher

Jika fokus bukan puncanya, pertimbangkan untuk menggunakan KeyEventDispatcher. Mekanisme berkuasa ini membolehkan anda menangkap peristiwa penting tanpa mengira komponen mana yang mempunyai fokus.

Kod Contoh

Coretan kod berikut menunjukkan cara menambah KeyEventDispatcher pada JFrame anda:

public class MyFrame extends JFrame {
    
    private class MyDispatcher implements KeyEventDispatcher {
        @Override
        public boolean dispatchKeyEvent(KeyEvent e) {
            if (e.getID() == KeyEvent.KEY_PRESSED) {
                System.out.println("tester");
            } else if (e.getID() == KeyEvent.KEY_RELEASED) {
                System.out.println("2test2");
            } else if (e.getID() == KeyEvent.KEY_TYPED) {
                System.out.println("3test3");
            }
            return false;
        }
    }
    
    public MyFrame() {
        add(new JTextField());
        System.out.println("test");
        KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
        manager.addKeyEventDispatcher(new MyDispatcher());
    }

    public static void main(String[] args) {
        MyFrame f = new MyFrame();
        f.pack();
        f.setVisible(true);
    }
}
Salin selepas log masuk

Dengan kod yang dipertingkatkan ini, anda kini boleh menangkap peristiwa penting dan melakukan tindakan yang diingini, menyelesaikan isu awal KeyListener yang tidak responsif.

Atas ialah kandungan terperinci Mengapa Pendengar Kunci JFrame Saya Tidak Menjawab?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan