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

  • hockeywebcasts

    hockeywebcas

    31 EKİM 2012
  • Ryan Billy

    Ryan Billy

    30 EKİM 2006
  • Sorikan

    Sorikan

    3 ŞUBAT 2008