Ich habe eine Java Swing-Anwendung in der NetBeans-IDE.
Ich habe ein Formular erstellt und einen KeyListener an meine verschiedenen Steuerelemente angehängt:
%Vor% und keyTypedEvent
sind als solche definiert:
Ich habe ein println
zu evt
hinzugefügt, um zu sehen, was passiert und um zu überprüfen, ob mein Keylistener funktioniert.
Beim Erstellen und Ausführen meiner Anwendung habe ich festgestellt, dass die Ausgabe immer ein keycode = 0
Um dies zu überprüfen, hatte ich meine println in evt.getKeyCode()
geändert und gibt immer 0 zurück.
Ich könnte komplett falsch interpretieren, was KeyCode tut, aber ich dachte, dass es mit den Werten in Oracles Dokumentation hier zusammenarbeitet:
Zum Beispiel hat VK_ESCAPE einen Wert von 27.
Das Ereignis keyTyped()
wird nur für Schlüssel verwendet, die eine Zeicheneingabe erzeugen. Wenn Sie wissen möchten, wann eine Taste gedrückt oder losgelassen wird, müssen Sie keyPressed()
oder keyReleased()
implementieren.
Von der KeyEvent API:
"Key typed" -Ereignisse sind auf höherer Ebene und hängen im Allgemeinen nicht von der Plattform- oder Tastaturlayout. Sie werden generiert, wenn ein Unicode Zeichen wird eingegeben und ist der bevorzugte Weg, um herauszufinden Zeicheneingabe ....
Bei gedrückten und freigegebenen Tastenereignissen wird die getKeyCode-Methode zurückgegeben der keyCode des Ereignisses. Für Schlüssel typisierte Ereignisse die getKeyCode-Methode gibt immer VK_UNDEFINED zurück.
Alle Vorschläge zu KeyListener
für JButton
sind falsch, das heißt Button1.addKeyListener(new java.awt.event.KeyAdapter() {
Diese Ereignisse werden korrekt in JButtons API
, verwenden Sie SwingAction
oder fügen Sie ActionListener
zum Anhören von Mouse and Key Event
von / bis JButton
Im Grunde ist alles im Oracle-Tutorial über Schaltflächen, Kontrollkästchen, und Radio Buttons
Es hängt sehr von der Taste ab, die gedrückt wurde. Wahrscheinlich benötigen Sie KeyListener
mit keyPressed
Methodenüberschreibung, weil keyTyped
nicht auf nicht druckbaren Zeichen ausgelöst wird.
Sehen Sie sich den Unterschied zwischen keyTyped
und keyPressed
hier an:
KeyListener, keyPressed versus keyTyped
Tags und Links java swing keyevent keylistener