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

Composants Java Discussion :

comment rediriger un flux vers un JTextArea


Sujet :

Composants Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut comment rediriger un flux vers un JTextArea
    salut tout le monde,
    svp j'ai un petit problème, je souhaite dirigé de ma classe Thread_Action vers JTextArea d'une autre classe Jframe, comment dois-je faire?
    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
    public class Thread_Action extends Thread {
     
        Process p;
        Thread t_out;
        Thread t_err;
     
        public void run() {
            System.out.println("je suis " + Thread.currentThread().getName());
            //	String[] cmd = { "script/bin/sh.exe", "script/script.sh" };
     
            String[] cmd = { "script/bin/sh.exe", "script/script.sh" };
     
            try {
                // final Process p = Runtime.getRuntime().exec("script/go.bat");
                p = Runtime.getRuntime().exec(cmd);
     
                // Consommation de la sortie standard de l'application externe dans 2 Thread separe
                t_out = creeThreadFluxLecture(p.getInputStream());
                t_out.start();
     
                t_err = creeThreadFluxLecture(p.getErrorStream());
                t_err.start();
     
    ...............

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Regarde la méthode read de ton JTextArea.

    http://java.sun.com/j2se/1.5.0/docs/...a.lang.Object)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut
    que ce que je dois lui passer comme paramètre pour que je puisse accéder à ma p.getInputStream()?
    peux tu me donner un petit exemple?
    merci

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Tu as le droit de lire la Javadoc et de chercher un peu ça ne fait jamais de mal.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tonJTextArea.read(new InputStreamReader(p.getInputStream()), null);

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut
    c'est normal que j'ai cette erreur?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JTextConsole.read(new InputStreamReader(s.getTa().getP().getInputStream()), null);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
            at Interface.AccueilRsync1.actionPerformed(AccueilRsync1.java:264)
            at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
            at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
            at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
            at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    getTa ou getP te renvoie null.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut
    getTa ou getP te renvoie null

    je n'arrive pas à trouver pourquoi ça ne marche pas!!!!!

    tout marche parfaitement quand j'exécute la classe directement, mais dés que je veux visualiser le flux sur un JTxtRea, rien ne va plus.

    je vais poster la classe responsable peux être tu peux voir d'où viens l'erreur,
    merci pour ton aide et pour toutes tes réponses
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    public class Thread_Action extends Thread {
     
        Process p;
        Thread t_out;
        Thread t_err;
     
        public Process getP() {
            return p;
        }
     
        public void setP(Process p) {
            this.p = p;
        }
     
        public Thread getT_err() {
            return t_err;
        }
     
        public void setT_err(Thread t_err) {
            this.t_err = t_err;
        }
     
        public Thread getT_out() {
            return t_out;
        }
     
        public void setT_out(Thread t_out) {
            this.t_out = t_out;
        }
     
        p
     
            String[] cmd = { "test.bat" };
     
            try {
     
                p = Runtime.getRuntime().exec(cmd);
     
                // Consommation de la sortie standard de l'application externe dans 2 Thread separe
                t_out = creeThreadFluxLecture(p.getInputStream());
                t_out.start();
     
                t_err = creeThreadFluxLecture(p.getErrorStream());
                t_err.start();
     
                System.err.println("Waiting");
                try {
                    p.waitFor();
                } catch (InterruptedException e) {
                    System.err.println("L'user a demander d'annuler");
                }
     
                System.err.println("Fini");
     
            } catch (Exception e) {
                e.printStackTrace();
            }
     
        }
     
        public void interruptt() {
     
            t_out.interrupt();
            t_err.interrupt();
            p.destroy();
            /*try
            {
            p.waitFor();
            }
            catch (InterruptedException e)
            {
            // TODO Auto-generated catch block
            e.printStackTrace();
            }*/
            super.interrupt();
        }
     
        private Thread creeThreadFluxLecture(final InputStream inputStream) {
            Thread t = new Thread() {
     
                public void run() {
                    try {
                        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
                        String line = "";
                        try {
                            try {
                                while ((line = reader.readLine()) != null) {
                                    System.out.println("OUT:" + line);
                                }
                            } catch (IOException ex) {
                                // Logger.getLogger(Snippet.class.getName()).log(Level.SEVERE,
                                // null, ex);
                            }
                        } finally {
                            reader.close();
                        }
                    } catch (IOException ioe) {
                        ioe.printStackTrace();
                    }
                }
            };
            return t;
        }
     
    }
    j'essaie juste de visualiser le stram retourner par ce deux threads
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      t_out = creeThreadFluxLecture(p.getInputStream());
                t_out.start();
     
                t_err = creeThreadFluxLecture(p.getErrorStream());
                t_err.start();
    l'appel est effectué dans la méthode suivante de la classe JFrame.

    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
    public void actionPerformed(ActionEvent e) {
            Snippet s = new Snippet();
            if (e.getSource() == btnSynchronisation) {
     
                s.ExecuteTachFond();
                try {
     
                    JTextConsole.read(new InputStreamReader(s.getTa().getP().getErrorStream()), null);
                } catch (IOException ex) {
                    Logger.getLogger(AccueilRsync1.class.getName()).log(Level.SEVERE, null, ex);
                }
     
     
                 JTextConsole.setText(JTextConsole.getText());
                //JTextConsole.setText("test");
     
     
     
     
            }
            if ((e.getSource() == btnStopSynchronisation)) {
     
             s.stop();
            }

Discussions similaires

  1. Squid transparent,comment rediriger le flux https?
    Par kerkennah dans le forum Réseau
    Réponses: 1
    Dernier message: 02/08/2009, 11h04
  2. Comment rediriger la requête vers un JSP ?
    Par verbose dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 30/01/2008, 14h51
  3. Comment rediriger des adresses vers la boucle locale ?
    Par Pragmateek dans le forum Réseau
    Réponses: 5
    Dernier message: 11/04/2007, 23h04
  4. Comment rediriger la sortie vers /dev/null
    Par dclink dans le forum C
    Réponses: 4
    Dernier message: 24/06/2003, 18h23

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