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

Graphisme Java Discussion :

Affichage flux BufferedReader dans JTextArea


Sujet :

Graphisme Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 45
    Points : 25
    Points
    25
    Par défaut Affichage flux BufferedReader dans JTextArea
    Bonjour,

    J'ai un outils graphique qui permet de poster sur un serveur unix une commande shell (par jsch)
    et qui récupère via la class BufferedReader le flux de sortie pour l'afficher dans un object JtextArea.

    le problème est que je n'obtiens pas toujours le même affichage que sous putty, j'ai des sauts de ligne, des décalages etc ...par exemple si je passe la commande banner toto, il m'affiche :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
      #####   ####    #####   ####
        #    #    #     #    #    #
        #    #    #     #    #    #
        #    #    #     #    #    #
        #    #    #     #    #    #
        #     ####      #     ####
    Voici le code de la méthode que j'utilise:

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
        public int executeCommand(String command) {
            int exitCode = -1;
            ChannelExec channel = null;
    		BufferedReader stdoutReader = null;
            BufferedReader stderrReader = null;
    		String line ;
    		String line_error="" ;
            try {
                channel = (ChannelExec) oSession.openChannel("exec");
     
                channel.setCommand(command + "\n");
     
                InputStream stdout = channel.getInputStream();
                InputStream stderr = channel.getErrStream();
     
                channel.connect();
     
                stdoutReader = new BufferedReader(new InputStreamReader(stdout));
                stderrReader = new BufferedReader(new InputStreamReader(stderr));
     
                //while (stdoutReader.read() != -1) {
                   while ((line = stdoutReader.readLine()) != null ||(line_error = stderrReader.readLine()) != null) {
                    //System.out.println(stdoutReader.readLine());
    				//System.out.println(line) ;
    				if(line_error.length() > 0)
    				{
    				textarea.append(line_error+"\n") ;
    				line_error="";
    				}
    				textarea.append(line+"\n") ;
     
    				textarea.repaint() ;
    				}
     //&& (line_error = stderrReader.readLine()) != null
                exitCode = channel.getExitStatus();
     
                return exitCode;
            } catch (IOException e) {
                System.out.println("Cannot execute remote command: " + command
                        + " : " + e.getMessage());
            } catch (Exception e) {
                System.out.println("Cannot execute remote command: " + command
                        + " : " + e.getMessage());
            } finally {
                try {
                    stdoutReader.close();
                    stderrReader.close();
                } catch (Exception e) {
                    System.out.println(e.getMessage());
                }
                if (channel != null) {
                    channel.disconnect();
                }
            }
            return exitCode;
        }
    si quelqu'un a une idée ... d'avance merci.

  2. #2
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    Le pb est qu'il ne m'affiche pas du tout toto comme indiqué dans la demande, d'ailleurs lorsque je poste la demande, il me remet toto dans l'ordre, je ne comprends rien ...

  3. #3
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Je n'ai pas bien compris tout le problème.

    Par contre, j'imagine un problème possible si tu utilises un TextArea pour afficher un texte qui est censé s'afficher dans une console ou les caractères sont "mis dans des cases".

    Si tu n'utilises pas une font style "Console" alors tu risques d'avoir des décalages suspect. Et la encore je ne parle pas des problèmes d'éventuel retour a ligne et autres qui est encore un autre problème.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    Merci pour ta réponse, mais je ne comprend pas bien à quoi correspond la font de type console.

    Mon pb est que ce qui s'affiche dans le jtextarea(flux de sortie de ssh) est dans certains cas décalé (le cas du banner toto), cela ne s'affiche pas comme dans un putty.

    Ce qui est encore plus étrange, c'est lorsque je copie le resultat du banner toto du jtextarea et que je le colle par exemple dans un fichier (sous notepad ++ par ex) le toto se met en forme correctement....

  5. #5
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    C'est bien ce que je te disait, a mon avis la font utilisé n'est pas du type "console" (ce n'est probablement pas le bon mot).

    Cad que chacun des caractére ne fait pas la même largeur en pixel. Un espace, un i ou un a ne prendra pas la meme largeur donc tu auras des décalage.

    Essaye avec Lucida console par exemple tu m'en diras des nouvelles
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    Merci beaucoup WAX78, c'est effectivement un pb de font, j'ai appliqué une font de type courrier new comme celle de putty, et cela fonctionne c'est super !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Affichage flux camera ip dans swf
    Par LoGGi dans le forum Flash
    Réponses: 1
    Dernier message: 04/09/2013, 12h31
  2. Affichage d'un flux vidéo dans un ellipse
    Par abdria dans le forum C#
    Réponses: 10
    Dernier message: 12/12/2011, 10h45
  3. Affichage d'un flux RSS dans Firefox 4
    Par Eusebius dans le forum Firefox
    Réponses: 0
    Dernier message: 08/05/2011, 22h35
  4. l'affichage dans jtextarea
    Par taki_2008abdou dans le forum Débuter
    Réponses: 4
    Dernier message: 14/02/2010, 19h29
  5. Affichage d'un flux pdf dans une page html
    Par NizarK dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 27/03/2007, 08h41

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