Rumah > Java > javaTutorial > teks badan

Mengapa Pendengar Kunci Saya Tidak Membalas dalam JFrame Saya?

Linda Hamilton
Lepaskan: 2024-11-11 08:56:03
asal
420 orang telah melayarinya

Why is My KeyListener Not Responding in My JFrame?

Pendengar Kunci Tidak Responsif untuk JFrame: Menggunakan KeyEventDispatcher

Anda mengalami KeyListener yang tidak bertindak balas kerana tumpuan mungkin bukan pada JFrame. Untuk menangani perkara ini, pertimbangkan untuk menambah KeyEventDispatcher yang berasingan pada KeyboardFocusManager.

Dalam contoh kod berikut, kelas MyDispatcher ditakrifkan dan ditambahkan pada KeyboardFocusManager:

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

Penghantar ini mengendalikan semua kunci acara tanpa mengira fokus komponen, mencetak mesej ke konsol. Pendekatan ini memastikan KeyListener anda akan menerima input papan kekunci walaupun fokus tidak langsung pada JFrame.

Atas ialah kandungan terperinci Mengapa Pendengar Kunci Saya Tidak Membalas dalam JFrame Saya?. 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