IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Lire un caractère tapé au clavier


Sujet :

Entrée/Sortie Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Points : 124
    Points
    124
    Par défaut Lire un caractère tapé au clavier
    Alors voici ma classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    import java.io.*;
     
    class LireChar {
     
        public static void main ( String [] argv ){
     
            int x,y=0;
            char c;
            InputStreamReader isr = new InputStreamReader (System.in);
     
            try 
            {
                while( y < 10 ) 
                {
                    x=isr.read();
                    c=(char) x;
                    System.out.print(c);
                    System.out.print("-");
                    y++;
                }
                isr.close();
            }
            catch ( IOException e ) { e.printStackTrace(); }
        }
    }
    Tout à l'aire de bien marcher mais pourtant :

    1) Pk il n'y a pas le System.out.print("-"); qui s'affiche entre chaque caractères ?

    2) Pk après 10 caractères mon programme ne s'arrête pas ?

    3) Dès que je change le focus avec la souris (supposons que je vais sur mon bureau) et je tappe n'importe quoi, le programme ne li plus les caractères. Y a-t-il un moyen pour que le programme lise les caractères même si je suis sur word en train d'écrire par exemple ?

    Merci d'avance pour votre aide

  2. #2
    Membre éclairé Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Points : 676
    Points
    676
    Par défaut
    alors apres mes quelque piti teste le programe ne lit pas les caractaire a la voler mais une fois l'appui sur "entrer"

    donc une fois l'appui sur entrer le prog lit les 10 premier caractaire taper et les separe par un "-"

    et pour que le prog resoive les evenement il est obligatoire a ma conaisance que le prog et le focus :s

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Points : 124
    Points
    124
    Par défaut
    Ha oui c'est vrai que une fois le "enter" appuyé tout marche correctement
    Quelqu'un pourrait m'expliquer pourquoi ?

    AUssi quelqu'un aurait une idée pour cette histoire de focus ?
    Je voudrais que mon programme lise les caractères a tout moment...
    Comment faire ?

  4. #4
    Membre éclairé Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Points : 676
    Points
    676
    Par défaut
    le pourquoi ca doit venir du faite que les donner sont envoyer sur l'entrer standar du programe des l'appuie sur entrer et pas avant :s

    donc pour lire les caractaire taper au clavier sans keylistener ca a l'air mal barer avec le peu que je connaisse :s

    mais pour utiliser un keylistener il faut un component :s
    et il lui faut toujour le focus :s

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Points : 124
    Points
    124
    Par défaut
    hmm oké et donc il n'y a pas de solution ?... si quelqu'un a une idée elle est la bien venue

  6. #6
    Membre éclairé Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Points : 676
    Points
    676
    Par défaut
    voila avec ca tu affiche tout les caractaire tapper au clavier mais bon il faut toujour que le prog garde le focus :s
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    import javax.swing.*;
    import java.awt.event.*;
     
    class Main extends JFrame
            {
            Main()
                    {
                    addKeyListener(new Keyboard());
     
                    setVisible(true);
                    }
            static public void main(String args[])
                    {
                    new Main();
                    }
            }
     
    class Keyboard implements KeyListener
            {
            public void keyTyped(KeyEvent e)
                    {
                    System.out.print(e.getKeyChar()+"-");
                    }
            public void keyPressed(KeyEvent e)
                    {
                    }
            public void keyReleased(KeyEvent e)
                    {
                    }
            }

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Points : 124
    Points
    124
    Par défaut
    Merci unknow0 !

    Mais là tu utilise une JFrame. si je la set a "notVisible" ou change de focus, je ne peux plus rien faire.
    Comment pourrait-on faire pour que le programme continue a lire les caractère si l'ont passe sous Word par exemple ?... c'est ca que je voudrais savoir!

  8. #8
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    En JAVA tu ne pourras pas. Ce que tu voudrais faire c'est avoir un "écouteur" directement sur le clavier. C'est quelque chose qui est de trop "bas niveau" pour JAVA. Pour faire ce que tu veux il faut que tu te tourne vers d'autres langage (peut être C ou C++).
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Points : 124
    Points
    124
    Par défaut
    guigui5931 merci


    Serait-il possible de créer un keyboard listener qui perderait et récupérerait le focus toutes les 0.00001 secondes de façon à que l'ont puisse écrire sous word et récupérer les touches pressées sous le programme java ?
    (le problème qui me vient à l'esprit est: comment le programme saura à qui redonné le focus word, le bureau, internet... ) ? Si quelqu'un a une idée il n'a qu'a compléter mon keyboard listener ou celui a unknow0

    Merci d'avance !




    PS:Mais je persiste à croire qu'il y a une solution... Quelqu'un d'autre aurait une idée ?

  10. #10
    Membre éclairé Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Points : 676
    Points
    676
    Par défaut
    c'ets bien ce que je pensais guigui5931 java et trop peu lier avec le system pour recuperer les touches claviers en permanence :s

    en faite Sokai la jvm ne resois les evenement que si sont aplication a le focus donc pour recuperer les touches quan elle ne l'a pas c'est pas fesable.. en Java du moin
    comme le dit guigui5931 en c/c++ ca doit etre fesable

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Points : 124
    Points
    124
    Par défaut
    et est-ce que mon idée serait réalisable ?...

Discussions similaires

  1. lire les caractères entrés au clavier au fur et à mesure
    Par Decon dans le forum Général Java
    Réponses: 9
    Dernier message: 07/05/2010, 13h19
  2. Réponses: 15
    Dernier message: 09/03/2007, 22h22
  3. lire des caractères
    Par soria_t dans le forum C
    Réponses: 5
    Dernier message: 23/02/2007, 12h20
  4. Réponses: 6
    Dernier message: 16/12/2006, 15h08
  5. [C#] mémoriser les caractères saisis au clavier
    Par tiboleo dans le forum Windows Forms
    Réponses: 1
    Dernier message: 04/06/2006, 12h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo