Convertir char en string java.

Fermé
Hugueprime Messages postés 12 Date d'inscription lundi 7 août 2017 Statut Membre Dernière intervention 3 avril 2020 - Modifié le 10 févr. 2018 à 00:21
Hugueprime Messages postés 12 Date d'inscription lundi 7 août 2017 Statut Membre Dernière intervention 3 avril 2020 - 10 févr. 2018 à 22:20
Bonjour,
Je suis en train de faire un programme qui récupère toutes les frappe de clavier et qui les envoie a un autre ordinateur. J'utilise une KeyListener qui me permet d'avoir mes caractères mais je n'arrive pas a les convertir en ascii avec cette méthode :
     textbox.addKeyListener(new KeyAdapter() {
       public void keyTyped(KeyEvent ke){
             String s = ke;
       System.out.println((int)s.charAt(0) );
       }
      });

De plus je n'arrive pas à récupérer la frappe de touche comme ctrl ou alt.
Si quelqu'un a une idée. Merci d'avance.
A voir également:

1 réponse

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
10 févr. 2018 à 00:29
Bonjour,

Là le problème n'est même pas dans la conversion entre char et String, c'est que tu essayes de mettre un KeyEvent dans un String, ce qui n'a rien à voir du tout.

Il faudrait utiliser la méthode getKeyChar() de l'objet KeyEvent pour récupérer le char correspondant.
https://docs.oracle.com/javase/9/docs/api/java/awt/event/KeyEvent.html#getKeyChar--

textbox.addKeyListener(new KeyAdapter() {
    @Override
    public void keyTyped(KeyEvent keyEvent) {
        System.out.println(keyEvent.getKeyChar());
    }
});

Remarque : Java ne travailles pas en ASCII mais en UTF-16.
0
Hugueprime Messages postés 12 Date d'inscription lundi 7 août 2017 Statut Membre Dernière intervention 3 avril 2020
10 févr. 2018 à 11:19
Merci pour ta rapidité, mais je n'ai pas tout compris je ne peux donc pas convertir un caractère en UTF-16 ? Ton code me donne que les lettres tapé, je ne peux pas avoir des nombre a la place des caractère ? Et je n'arrive toujours pas a récupéré la pression de la touche ctrl, alt..
Comment puis-je faire ? Merci
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019 > Hugueprime Messages postés 12 Date d'inscription lundi 7 août 2017 Statut Membre Dernière intervention 3 avril 2020
Modifié le 10 févr. 2018 à 13:10
"je ne peux donc pas convertir un caractère en UTF-16"
Il n'y a pas besoin de conversion, les caractères sont déjà en UTF-16, mais tu demandais "a les convertir en ascii" ce qui n'a de sens que pour les 128 premiers caractères (qui sont commun avec l'Unicode) mais pour tous les autres ce ne sera pas de l'ASCII.

"me donne que les lettres tapé, je ne peux pas avoir des nombre a la place des caractère ?"
À partir du moment où tu as ton char, tu peux faire la conversion avec ton cast (int) comme tu l'avais fait avec ton code précédent :
System.out.println((int) keyEvent.getKeyChar());


"je n'arrive toujours pas a récupéré la pression de la touche ctrl, alt"
Parce que ce ne sont pas des caractères, or la méthode keyTyped ne récupère que les caractères.
Si tu veux récupérer les touches du clavier (ou les combinaisons de touches de celles-ci), tu devrais plutôt regarder les méthodes keyPressed et keyReleased.
Voir la documentation : https://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html

Par exemple, si keyPressed détecte que tu appuies sur VK_UP (touche majuscule) puis VK_A, keyTyped va récupérer le caractère 'A' et keyReleased va détecter que tu relâches VK_A puis VK_UP.
Autre exemple, keyPressed détecte l'appuie sur VK_CIRCUMFLEX, keyReleased sa relâche, keyPressed détecte l'appuie sur VK_E, keyTyped récupère le caractère 'ê' et keyReleased la relâche de VK_E.
0
Hugueprime Messages postés 12 Date d'inscription lundi 7 août 2017 Statut Membre Dernière intervention 3 avril 2020
10 févr. 2018 à 22:20
Merci, la conversion des caractères en nombre a marché comme je le voulais. Il faut juste que je teste pour le récupération des caractères spéciaux. Mais sinon c'est exactement se que je voulais faire. Merci encore.
0