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

  • Bigapplemagic

    Bigapplemagi

    22 EYLÜL 2011
  • Disney Pets and Animals

    Disney Pets

    29 ŞUBAT 2012
  • TechnoBuffalo

    TechnoBuffal

    8 HAZİRAN 2007