2009-06-18 8 views
2

i m en utilisant l'événement du clavier sur les objets Robot ....événements clés

mais chaque fois que je dois spécifier les clés individuellement .... comme

Robot r = new Robot(); r.KeyPress (KeyEvent.VK_A); r.KeyPress (KeyEvent.VK_B); r.KeyPress (KeyEvent.VK_C); r.KeyPress (KeyEvent.VK_D);

Y at-il une technique pour obtenir/reconnaître eacha chaque clé .... pas en les spécifiant individuellement ....? i m recieving le code d'activation de côté serveur dans keyCode variables .... si i peut utiliser cette variable directement inplace de "KeyEvent.VK_D" comme r.keyPress (keyCode); s'il vous plaît dites-moi ....

Répondre

1

L'identificateur de clé est juste une valeur Int. Lorsque la valeur du serveur correspond à la valeur java, vous pouvez directement ajouter la valeur. Sinon, vous devez créer une carte où la valeur du serveur fait référence à la valeur de la clé java.

J'ai rencontré le même problème lors de la conversion entre les événements de clé Q + C++ et les événements de clé Java. La valeur ne correspond pas non plus. J'ai dû créer une cartographie pour cela.

Jetez un oeil à la classe KeyEvent. Chaque clé est listée avec une valeur int. Vous devez vérifier si la valeur que vous obtenez du serveur correspond à cette valeur int. Lorsque la valeur du serveur ne correspond pas, vous devez créer une carte. La clé de la carte est la valeur du serveur et la valeur de la carte est la valeur de KeyEvent correspondante pour la clé enfoncée. Lorsque les valeurs correspondent, vous n'avez pas besoin de créer une carte. Vous pouvez directement utiliser la valeur du serveur pour la commande Robot.

+0

comment avez-vous fait cette cartographie .... entre keyevents .... pouvez-vous me dire plz ...? –

+1

Comme l'a écrit Markus, vous devez créer java.util.Map et ajouter une entrée pour chaque clé. –

0

Um ... oui? Les constantes dans KeyEvent.VK_D sont simplement là pour votre commodité. Il n'y a absolument rien de mal à utiliser des valeurs numériques ailleurs, à condition que les mêmes valeurs soient utilisées pour les mêmes clés.

+0

ya que j'avais essayé ce que vous dites ..... mais au lieu de "KeyEvent.VK_D" sa valeur ASCII 100 ne fonctionne pas ..... plz résoudre ce problème ... –

+1

Vous ne pouvez pas utiliser les valeurs ASCII directement, vous devez les mapper aux codes clés appropriés. –

0

Si je comprends bien votre question, vous essayez d'obtenir cette action à chaque fois qu'une touche est poussée. Bien que je doute que je lis votre question correctement, la solution à cette question serait d'utiliser KeyEvent.KEY_PRESSED et si vous voulez une action ou pour définir une variable quand une clé est libérée ce serait KeyEvent.KEY_RELEASED. Bien que, je suis un peu confus. Voulez-vous vraiment que la même action se produise lorsque vous appuyez sur toutes les touches ou voulez-vous un événement unique pour un ensemble de touches?