Récupération d'une commande DOS

cs_Lycanthrope Messages postés 14 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 4 janvier 2005 - 23 mai 2004 à 16:58
cs_Lycanthrope Messages postés 14 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 4 janvier 2005 - 24 mai 2004 à 10:35
Bonjour,

J'explique mon problème :
Je veux récupérer et afficher le résultat d'une commande DOS dans un JTextArea, seulement, ça ne marche pas spécialement avec mon code, étant donné qu'il récupère ligne par ligne le résultat de la commande.

Alors, est ce qu'il y a un moyen d'entrer des lignes 1 par 1 dans un JTextArea ou, à défaut, de récupérer le résultat de la commande dans sa totalité pour la mettre dans le JTextArea ????

Je joins le code :

La commande (qui fonctionne parfaitement) :
 public TestPing(){
{   try {
    Process p =rt.exec("ipconfig");
    java.io.BufferedReader br= new java.io.BufferedReader( new InputStreamReader(p.getInputStream()));
    String s=null;
    while ((s = br.readLine()) != null)
    System.out.println(s);
    new Affiche(s); // ici, j'envoie à ma fonction d'affichage
         }
     catch(Exception e){
     e.printStackTrace();  
     }
}
    }

=========================================
L'affichage (c'est ici que ça me pose problème):
import javax.swing.*;

public class Affiche extends JFrame{
public Affiche(String s){
JFrame fenetre = new JFrame ("Résultat de la commande");
        JTextArea res = new JTextArea(s);
        fenetre.getContentPane().add(res);
        res.setText(s); // en théorie, ici, je récupère les données que je veux
        fenetre.setSize(300,300);
        fenetre.show();
    }
}


La fenêtre s'ouvre bien, mais il n'y a rien dans le JTextArea.

8 réponses

cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
23 mai 2004 à 18:52
GodConan :clown)

ta essayer de metre un layout a ta fenetre ?! t sur que tu le voi le JTextArea?!!

GL
0
cs_Lycanthrope Messages postés 14 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 4 janvier 2005
23 mai 2004 à 19:16
Oui oui, je vois la fenetre, le JTextArea, mais le pb vient du fait que le dit JTextArea ne se rempli pas.
0
kaloway Messages postés 358 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 13 avril 2020
23 mai 2004 à 20:25
kaloway

essai de modifier ton code comme ceci

String s;
String t;
while ((s=br.readline()) !=null){
System.out.println(s);
t=t+s;
}
new Affiche(t);
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
23 mai 2004 à 20:45
GodConan :clown)

a vi javai pas fait gaf ;o) met pas le new ds la boucle ;o)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Lycanthrope Messages postés 14 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 4 janvier 2005
23 mai 2004 à 20:52
Je l'ai sortis de la boucle mais toujours pas :(
    public TestPing(){
{   try {
    Process p =rt.exec("ipconfig");
    java.io.BufferedReader br= new java.io.BufferedReader( new InputStreamReader(p.getInputStream()));
    String s;
    while ((s = br.readLine()) != null)
    System.out.println(s);
    t=t+s;
     }
     catch(Exception e){
     e.printStackTrace();  
     }
    new Affiche(t);    
}
}
    private String t;

Maintenant, il affiche quelque chose dans la fenêtre : "nullnull" :(

Si vous voulez le truc complet :
commandes.zip

(et y a quelques autres bugs :) )
0
cs_Lycanthrope Messages postés 14 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 4 janvier 2005
23 mai 2004 à 20:53
Par contre, ça affiche bien le résultat de la commande dans la console !!
0
kaloway Messages postés 358 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 13 avril 2020
24 mai 2004 à 08:53
kaloway

voila le code qui fonctionne:

public TestPing(){
try {
Process p =rt.exec("ipconfig");
java.io.BufferedReader br= new java.io.BufferedReader( new InputStreamReader(p.getInputStream()));
String s;
String t="";
while ((s = br.readLine()) != null){
System.out.println(s);
t=t+s;
}
new Affiche(t);
}
catch(Exception e){
e.printStackTrace();
}

}

j'insiste qu'il faut respect l'ecriture de la boucle while comme ceci :

while ((s = br.readLine()) != null){
System.out.println(s);
t=t+s;
}
0
cs_Lycanthrope Messages postés 14 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 4 janvier 2005
24 mai 2004 à 10:35
Merciiiiiiiiiiiiiiiiiiiiiiiiiiii !!!
Et dans l'affichage, j'ai rajouter :
t=t.replaceAll(" ","\n");
pour formater un peu le texte.

Je mettrais la source du prog ici quand je l'aurais finis :)
0
Rejoignez-nous