KeyEvents treten nicht ein
-
Hi. Habe folgenden Anfang einer Klasse geschrieben, die KeyEvents verarbeiten soll. Aber das tut sie nicht. Warum?
import java.awt.Window; import java.awt.AWTEvent; import java.awt.Graphics; import java.awt.event.MouseListener; import java.awt.event.MouseEvent; import java.awt.event.KeyListener; import java.awt.event.KeyEvent; import java.awt.Color; public class Playground extends Window implements MouseListener, KeyListener { Main main; VComponent current; public Playground(Main main) { super(main); setSize(800, 600); setBackground(Color.lightGray); enableEvents(AWTEvent.KEY_EVENT_MASK); addMouseListener(this); addKeyListener(this); this.main = main; } public final void start() { requestFocus(); repaint(); } public final void exit() { } public final void paint(Graphics g) { } public final void mouseExited(MouseEvent e) { } public final void mouseEntered(MouseEvent e) { requestFocus(); } public final void mouseClicked(MouseEvent e) { } public final void mousePressed(MouseEvent e) { } public final void mouseReleased(MouseEvent e) { } public final void keyTyped(KeyEvent e) { if (e == null) System.out.println("e == null"); System.out.println("keyTyped"); if (e.getKeyCode() == KeyEvent.VK_ESCAPE) { System.exit(0); } } public final void keyPressed(KeyEvent e) { System.out.println("keyPressed"); } public final void keyReleased(KeyEvent e) { } }
-
1.) Was heißt "Aber das tut sie nicht"? kommt nichts auf der Konsole, ...?
2.) Lass mal die Zeile weg: enableEvents(AWTEvent.KEY_EVENT_MASK);
Möglicherweise geht's dann schon.3.) Die Methode keyTyped wird bei Funktionstasten _nicht_ aufgerufen.
-
zu 1.:
Das soll heißen, dass überhaupt keine KeyEvents gefeuert werden.
zu 2.: ob mit oder ohne, es klappt bei beiden Versionen nicht
zu 3.: Da sist doch egal. Eigentlich müsste trotzdem eine Ausgabe in der Konsole erscheinen, dass überhaupt ein Event gefeuert wurde. Es kommt aber keine...
-
Tipp am Rande:
Nimm statt den Listener Klassen die dazugehörigen Adapterklassen. Dadurch fällt viel sinnloser Code weg.