2017-03-07 1 views
0

Je crée un bloc-notes en utilisant java.there semble être un petit problème.Java ne reçoit pas la ligne du code qui a une condition concernant la touche ENTRÉE. Il comprend ctrl et Alt.but pas entrer. juste sauter cette partie! que puis-je faire? `KeyEvent ne comprend pas Entrée touche

if(!e.isControlDown() && !e.isAltDown() && e.getKeyCode() != KeyEvent.VK_ENTER) 
     { 
      frame.wholeText.linesList.get(frame.cursor.j).chars.add(frame.cursor.i,c); 
      frame.cursor.i += 1 ; 
      System.out.println("Entered"); 
      charMetric = frame.getFontMetrics(frame.getFont()).charWidth(c) ; 
      frame.cursor.setX(frame.cursor.getX() + charMetric); 

     }` 

PS: Cela ne devrait pas entrer dans cette condition quand j'appuie sur ENTER mais c'est le cas. PS2: Il est dans la partie KeyTyped du code.

+2

Bien que vous vérifiez est le code de clé n'est pas entrer. Changez votre état if à: 'if (! E.isControlDown() &&! E.isAltDown() && e.getKeyCode(). Est égal à (KeyEvent.VK_ENTER))' –

+0

ouais mais il entre dans cette condition quand j'appuie sur Entrée, tout il ne devrait pas –

+0

Peut-être essayer l'opérateur 'equals' au lieu de'! = ' –

Répondre

0

Le documentation for KeyEvent.getKeyCode() est assez clair:

Renvoie: le code entier pour une clé réelle sur le clavier. (Pour les événements KEY_TYPED, le code d'activation est VK_UNDEFINED.)

A l'inverse, KeyEvent.getKeyChar() dit:

Key_pressed et les événements KEY_RELEASED ne sont pas destinés à des rapports de saisie de caractères. Par conséquent, les valeurs renvoyées par cette méthode sont garanties uniquement pour les événements KEY_TYPED.

Les événements KEY_PRESSED et KEY_RELEASED génèrent un KeyEvent avec un keyCode valide, mais pas de keyChar. Les événements KEY_TYPED sont à l'opposé: ils génèrent un KeyEvent avec un keyChar valide, mais le keyCode est toujours indéfini.

Vous vérifiez la valeur de getKeyCode() pour un événement KEY_TYPED, de sorte que keyCode sera toujours indéfini.

Utilisez la méthode e.getKeyChar() != '\n' ou effectuez la vérification du code clé dans la méthode keyPressed.