2013-02-05 33 views
8

मेरे पास नेटबीन आईडीई में जावा स्विंग एप्लिकेशन है।KeyTypedEvent KeyEvent की KeyCode हमेशा 0 है?

मैं एक रूप बना दिया है और इस तरह के रूप में अपने विभिन्न नियंत्रण करने के लिए एक KeyListener संलग्न:

jButton1.addKeyListener(new java.awt.event.KeyAdapter() { 
     public void keyTyped(java.awt.event.KeyEvent evt) { 
      keyTypedEvent(evt); 
     } 
    }); 

और keyTypedEvent इस तरह के रूप में परिभाषित किया जाता है:

private void keyTypedEvent(java.awt.event.KeyEvent evt) 
{        
System.out.println(evt); 
appendDisplay(String.valueOf(evt.getKeyChar())); 
} 

मैं evt करने के लिए एक println जोड़ा क्या देखने के लिए होता है और यह सत्यापित करने के लिए कि मेरा कीलिस्टर काम करता है। जब मैं का निर्माण और अपने आवेदन चलाने के लिए, मैंने महसूस किया कि उत्पादन हमेशा evt.getKeyCode() होने के लिए एक मेरी println keycode = 0

इसे प्रमाणित करने के, मैं बदल गया था करने के लिए लगता है और यह हमेशा वापस आ रहा है 0.

मैं हो सकता है पूरी तरह से बदल क्या कीकोड करता है, लेकिन मैंने सोचा कि यह Oracle के दस्तावेज़ यहां में मूल्यों के साथ coorespond होगा:

http://docs.oracle.com/javase/7/docs/api/constant-values.html#java.awt.event.KeyEvent.VK_ESCAPE

उदाहरण के लिए, VK_ESCAPE 27.

012 का अपना महत्व होता है
+0

KeyListener प्रयोग न करें। या तो दस्तावेज़ लिस्टनर या स्विंग कुंजी बाइंडिंग का उपयोग करें। –

उत्तर

22

keyTyped() ईवेंट केवल उन कुंजी के लिए उपयोग किया जाता है जो वर्ण इनपुट उत्पन्न करते हैं। यदि आप जानना चाहते हैं कि जब कोई भी कुंजी दबाई जाती है या रिलीज़ होती है, तो आपको keyPressed() या keyReleased() लागू करना होगा।

KeyEvent एपीआई से

:

"कुंजी टाइप" घटनाओं उच्च स्तर के हैं और आम तौर मंच या कीबोर्ड लेआउट पर निर्भर नहीं है। वे जब एक यूनिकोड चरित्र दर्ज किया गया है उत्पन्न कर रहे हैं, और के बारे में चरित्र इनपुट पता लगाने के लिए पसंदीदा तरीका कर रहे हैं ....

कुंजी दबाया जाता है और कुंजी जारी की घटनाओं के लिए, getKeyCode विधि रिटर्न घटना के कीकोड। कुंजी टाइप की गई घटनाओं के लिए, getKeyCode विधि हमेशा VK_UNDEFINED लौटाता है।

0

यह बहुत ही महत्वपूर्ण कुंजी पर निर्भर करता है। शायद आपको विधि ओवरराइड के साथ KeyListener की आवश्यकता है, क्योंकि keyTyped गैर-प्रिंट करने योग्य वर्णों पर ट्रिगर नहीं किया गया है।keyTyped और keyPressed के बीच का अंतर यहाँ पर

देखो: KeyListener, keyPressed versus keyTyped

3

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^