2009-03-05 17 views
30

आप मदद कर सकते हैं मुझे इस कोड refactor:जावा कुंजीलिस्टर में एक कुंजी कुंजी दबाए गए कुंजी को कैसे जांचें?

public void keyPressed(KeyEvent e) 
    { 

    if (e.getKeyCode()==39) 
    { 
       //Right arrow key code 
    } 

    else if (e.getKeyCode()==37) 
    { 
       //Left arrow key code 
    } 

    repaint(); 

} 

कृपया well.Thanks के रूप में ऊपर/नीचे तीर कुंजी के लिए जाँच करने के लिए कैसे उल्लेख!

उत्तर

69
public void keyPressed(KeyEvent e) { 
    int keyCode = e.getKeyCode(); 
    switch(keyCode) { 
     case KeyEvent.VK_UP: 
      // handle up 
      break; 
     case KeyEvent.VK_DOWN: 
      // handle down 
      break; 
     case KeyEvent.VK_LEFT: 
      // handle left 
      break; 
     case KeyEvent.VK_RIGHT : 
      // handle right 
      break; 
    } 
} 
+0

KeyEvent के साथ KeyEvet को प्रतिस्थापित करें :) – Ricket

0

यदि आपका मतलब है कि आप इसे अपने पैनल (विंडो जिसमें आप काम कर रहे हैं) से संलग्न करना चाहते हैं।

तो आपको IKeyListener इंटरफ़ेस से विस्तारित एक आंतरिक कक्षा बनाना है और फिर उस विधि को कक्षा में जोड़ें।

फिर, उस कक्षा को उस पैनल से संलग्न करें: यह .addKeyListener (नया सबक्लास());

0

आपको वास्तविक कोड के बजाय KeyEvent.VK_UP जैसी चीजों का उपयोग करना चाहिए।

आप इसे कैसे पुन: सक्रिय करना चाहते हैं? रिफैक्टरिंग का लक्ष्य क्या है?

+0

मैं सिर्फ पता है कि लगातार इस जाँच के लिए उपयोग करने की आवश्यकता, अभी मैं 39/37 आदि –

+0

के संख्यात्मक मान के साथ तुलना कर रहा हूँ मुझे नहीं लगता कि मैं वास्तव में है कि रिफैक्टरिंग कहेंगे ... – TofuBeer

6
public void keyPressed(KeyEvent e) { 
    if (e.getKeyCode() == KeyEvent.VK_RIGHT) { 
      //Right arrow key code 
    } else if (e.getKeyCode() == KeyEvent.VK_LEFT) { 
      //Left arrow key code 
    } else if (e.getKeyCode() == KeyEvent.VK_UP) { 
      //Up arrow key code 
    } else if (e.getKeyCode() == KeyEvent.VK_DOWN) { 
      //Down arrow key code 
    } 

    repaint(); 
} 

KeyEvent कोड एपीआई के सभी एक हिस्सा हैं: http://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyEvent.html

+0

अंतिम int कोड; कोड = e.getKeyCode(); स्विच (कोड) {} तेज और स्पष्ट होगा। – TofuBeer

6

बस जवाब (KeyEvent तरह से उपयोग कर रहा है जाने के लिए) को पूरा करने के लेकिन ऊपर तीर 38 है और डाउन ऐरो तो 40 है:

else if (e.getKeyCode()==38) 
    { 
      //Up arrow key code 
    } 
    else if (e.getKeyCode()==40) 
    { 
      //down arrow key code 
    } 
+4

मुझे हंसी बनाने के लिए +1 –

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