KeyTypedEvent KeyEvents KeyCode ist immer 0?

8

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:

%Vor%

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

enthält

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.

    
Rhs 05.02.2013, 19:01
quelle

3 Antworten

22

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.

    
Russell Zahniser 05.02.2013, 19:07
quelle
3
mKorbel 05.02.2013 19:15
quelle
0

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

    
mishadoff 05.02.2013 19:08
quelle

Tags und Links