2009-06-18 7 views
2

Il y a un problème lors de la manipulation de Robot.KeyPress (KeyEvent ...) est-il nécessaire de spécifier toutes les touches à chaque fois .... par exemple Robot.KeyPress (KeyEvent.VK_A); Robot.KeyPress (KeyEvent.VK_B); Robot.KeyPress (KeyEvent.VK_C); s'il n'y a aucun raccourci pour ne pas répéter ceci à chaque fois ... plz dites-moi .....événements clés avec la classe Robot

et l'interprétation pour les clés qui sont reçues du côté client est diff ... que celle qui est envoyée du côté serveur. ..

donc s'il vous plaît aidez-moi ...

+0

Le problème que vous voyez à l'interprétation des clés est probablement la même question soulevée par cette question: http: // stackoverflow .com/questions/915581/how-to-enter-text-in-a-cross-platform-way-with-the-awt-robot – Nat

Répondre

1

Il n'y a pas de méthode qui accepte touches simultanées à partir d'un grand nombre de touches puisque la plupart des claviers ont une limite sur le nombre maximum de touches pressées à un moment donné, et il y a rarement une raison pour appuyer simultanément sur plus de trois touches à la fois.

Si vous avez une séquence spécifique de clés que vous souhaitez envoyer à plusieurs reprises, vous pouvez le mettre dans un tableau et itérer à travers elle:

 int[] events = {KeyEvent.VK_A, KeyEvent.VK_B, KeyEvent.VK_C}; 
    Robot robot; 
    try { 
     robot = new Robot(); 
     for (int i = 0; i < events.length; i++) { 
      robot.keyPress(events[i]); 
      robot.keyRelease(events[i]); 
     } 
    } catch (AWTException e) { 
     e.printStackTrace(); 
    } 

Ou vous pouvez le mettre dans une fonction à la place. En ce qui concerne l'interprétation des clés, je suppose que vous oubliez l'appel keyRelease(), sinon, pouvez-vous publier exactement ce que vous recevez du côté client/serveur?

+1

Ce serait un bon endroit pour utiliser une boucle for-each: for (touche int: events) { ... } – James

1

J'ai écrit une API de haut niveau et pratique pour utiliser le robot AWT. Jetez un oeil à l'API Gestures dans la bibliothèque Window Licker.

Il résout le problème key events are interpreted as different symbols in different locales, mais uniquement en utilisant des fichiers de configuration pour décrire les dispositions de clavier. Je n'ai pas trouvé un moyen de le faire automatiquement en utilisant simplement les API Java.

0

Vous pouvez jeter un oeil à cette classe SmartRobot qui implémente exactement ce dont vous avez besoin

Questions connexes