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ş:
Neden char[] şifreler için Dize Java t...
Java kullanarak.net.Ateş ve işlemek iç...
Nasıl JSP dosyaları Java kod önlemek i...
Java ile bir numaralama için bir Dize ...
Ne'un yazdırmak için en kolay yol...