SORU
13 Kasım 2008, PERŞEMBE


JFrame için Java KeyListener tepkisiz ediliyor?

JFrame KeyListener uygulamaya çalışıyorum. Yapıcı, bu kodu kullanıyorum:

System.out.println("test");
addKeyListener(new KeyListener() {
    public void keyPressed(KeyEvent e) { System.out.println( "tester"); }

    public void keyReleased(KeyEvent e) { System.out.println("2test2"); }

    public void keyTyped(KeyEvent e) { System.out.println("3test3"); }
});

Bunu çalıştırdığımda, test konsol iletisi benim çıkageldi. Bir tuşa basıyorum ancak
Eğer KeyListener orada bile değildi sanki başka herhangi bir mesaj almak istemiyorum.

Odak noktası JFrame üzerinde olmadığı için olabilir diye düşünüyordum
ve bu yüzden onlar KeyListener herhangi bir olay almıyor, ama oldukça eminim.

Kaçırdığım bir şey mi var?

CEVAP
4 EYLÜL 2009, Cuma


Eğer her bileşen üzerinde bir dinleyici kayıt olmak istemiyorsan eğer
olabilirkendi KeyEventDispatcher ekleyinKeyboardFocusManager:

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);
    }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 10 Daughters, 2 Sons

    10 Daughters

    10 Mart 2009
  • Jeremy Gallman

    Jeremy Gallm

    11 NİSAN 2012
  • Michael Zhang

    Michael Zhan

    8 EYLÜL 2012