Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2988 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  afficher smplment le contenu de la cnsole et la sortie d'autre scripts

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

afficher smplment le contenu de la cnsole et la sortie d'autre scripts

n°642541
roievil
Taking Fire, Need Assistance..
Posté le 14-02-2004 à 00:40:57  profilanswer
 

bonjour...
 
Je cherche a afficher des informations pour faciliter l'usage de mes scripts sous forme de .jar : sans l'usage de mon editeur (eclipse) Je voudrais donc afficher simplement d'une part la console dans une fenetre lambda supplémentaire a mon interface graphique existe t'il une classe dans l'API java 1.4.1?
 
et d'autre part la sortie des programmes externes auxquels je fais appel dans mon script.
 
Cette classe devrait afficher une fenetre contenant la sortie d'un de mes deux programmes que l'on passe sous forme de BufferedReader.
 

Code :
  1. /*
  2. * Created on 2004-02-09
  3. *
  4. * To change the template for this generated file go to
  5. * Window>Preferences>Java>Code Generation>Code and Comments
  6. */
  7. package InterfaceGraphique;
  8. import java.io.*;
  9. import java.awt.*;
  10. import javax.swing.*;
  11. /**
  12. * @author Olivier
  13. *
  14. * Ouvre une fenetre dans laquelle on va afficher le bufferedReader entré
  15. *
  16. */
  17. public class FenetreSortieConsole extends JDialog {
  18. FenetreSortieConsole(BufferedReader br, String titre) throws IOException {
  19.  setSize(400,400);
  20.  setTitle(titre);
  21.  setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  22.  JTextArea sortieBlast = new JTextArea() ;
  23.  JScrollPane areaScrollPane = new JScrollPane(sortieBlast);
  24.  //areaScrollPane.setBackground(COULEUR) ;
  25.  areaScrollPane.setVerticalScrollBarPolicy(
  26.      JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
  27.  areaScrollPane.setPreferredSize(new Dimension(400, 200));
  28.  areaScrollPane.setBorder(BorderFactory.createTitledBorder(titre));
  29.  String line = br.readLine() ;
  30.  while (line != null) {
  31.   sortieBlast.append(line) ;
  32.   line = br.readLine() ;
  33.  }
  34.  Container panneau = getContentPane();
  35.  panneau.add(areaScrollPane) ;
  36. }
  37. }


 
Or cela ne fonctionen pas la fentetre reste vide apres avoir ete créee et que le contenu du bufferedREader passé en paramètre aie été par ailleurs affiché dans la console avec le code suivant (extrait) :
 

Code :
  1. if(cap3){
  2.       commandeCAP3 = ExtractionsDiverses.CreerCommande(valeurCommande1, cheminSaveSeq3) ;
  3.       System.out.println("commande cap 3 :" + commandeCAP3) ;
  4.       Process process2 = runtime.exec(commandeCAP3);
  5.       // récupération de la sortie console de CAP3        
  6.       BufferedReader b2 = new BufferedReader (new InputStreamReader(process2.getInputStream())) ;
  7.       String line2 = b2.readLine() ;
  8.       // afficher la sortie console             
  9.       while (line2!=null) {               
  10.                
  11.        System.out.println(line2) ;
  12.            
  13.        line2 = b2.readLine() ;
  14.            
  15.       }
  16.       // ouvre une fenetre contenant la sortie console Cap3
  17.       FenetreSortieConsole fr2 = new FenetreSortieConsole(b2, SORTIE_CAP3);
  18.       fr2.show();
  19.       process2.waitFor();
  20.                                      
  21.      }


 
 
voilà, merci
 
Olivier

mood
Publicité
Posté le 14-02-2004 à 00:40:57  profilanswer
 

n°642894
roievil
Taking Fire, Need Assistance..
Posté le 14-02-2004 à 20:30:34  profilanswer
 

Ben les gars c'est quoi qui vous laisse coi a propos de mon message il y a des trucs pas clairs?
 
Dans l'une des deux questions?
 
a+
 
Olivier

n°645898
yo c spi
Yo !
Posté le 17-02-2004 à 19:08:34  profilanswer
 

Voici pour rediriger la console dans une fenetre (simplifié).
 

Code :
  1. public class ConsoleFrame extends java.io.OutputStream {
  2. JTextArea text;
  3. Frame f;
  4. public ConsoleFrame() {
  5.     f = new Frame("console" );
  6.     text = new TextArea();
  7. }
  8. public void write(byte[] b) {
  9.     write(b, 0, b.length);
  10. }
  11. public void write(byte[] b, int off, int len) {
  12.     text.setText(text.getText() + new String(b, off, len));
  13. }
  14. public void write(int b) {
  15.     text.setText(text.getText() + Integer.toString(b));
  16. }
  17. }


 
et dans ton programme principal tu fais :

Code :
  1. System.setOut(new PrintStream(new ConsoleFrame()));


 
J'espere qu'il n'y a pas d'erreur (je l'ai tapé vite fait) et que c'est ca que tu demandais.


Message édité par yo c spi le 17-02-2004 à 20:05:41
n°647751
roievil
Taking Fire, Need Assistance..
Posté le 18-02-2004 à 21:02:14  profilanswer
 

bon bien ca marche pas terrible le code en question : ca ne fait absolument rien et mon programme ne fini jamais...
 
ou dans le programme principal faut il mettre la ligne de code?
 
voici le code corrigé par moi j'ai changé le frame en Jframe mais je ne sais pas si il fallait le faire (car ça n'a rien changé)...
 

Code :
  1. public class ConsoleFrame extends java.io.OutputStream {
  2.  JTextArea text;
  3.  JFrame f;
  4.    
  5.  public ConsoleFrame() {
  6.   f = new JFrame("console" );
  7.   text = new JTextArea();
  8.  }
  9.    
  10.  public void write(byte[] b) {
  11.   write(b, 0, b.length);
  12.  }
  13.    
  14.  public void write(byte[] b, int off, int len) {
  15.   text.setText(text.getText() + new String(b, off, len));
  16.  }
  17.    
  18.  public void write(int b) {
  19.   text.setText(text.getText() + Integer.toString(b));
  20.  }
  21.    
  22. }


 
voila
 
merci

n°647756
darklord
You're welcome
Posté le 18-02-2004 à 21:04:44  profilanswer
 

roievil a écrit :

bon bien ca marche pas terrible le code en question : ca ne fait absolument rien et mon programme ne fini jamais...


 
[:mlc]

n°648846
yo c spi
Yo !
Posté le 19-02-2004 à 17:55:11  profilanswer
 

Il est vrai que j'ai fait des erreurs dans mon code (je l'ai fait de tet a partir d'un code que j'avais déjà fait), déjà le mélange AWT-SWING, c'était pas top.
 
Voila un code qui marche (je l'utilise).
 

Code :
  1. import javax.swing.*;
  2. import java.io.OutputStream;
  3. public class ErrorFrame extends JFrame {
  4.     JTextArea text;
  5.    
  6.     public ErrorFrame() {
  7.         super("Debug" );
  8.         text = new JTextArea();
  9.         text.setEditable(false);
  10.         text.setOpaque(false);
  11.         JScrollPane scroll = new JScrollPane(text);
  12.         scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
  13.         scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
  14.        
  15.         getContentPane().add(scroll);
  16.        
  17.         pack();
  18.     }
  19.    
  20.     public OutputStream getOutputStream() {
  21.         return new OutputStream() {
  22.             public void write(byte[] b) {
  23.                 text.setText(text.getText() + new String(b));
  24.             }
  25.    
  26.             public void write(byte[] b, int off, int len) {
  27.                 text.setText(text.getText() + new String(b, off, len));
  28.             }
  29.            
  30.             public void write(int b) throws java.io.IOException {
  31.                 System.out.println("write(int b) appelée" );
  32.             }
  33.         };
  34.     }
  35. }


 
et dans le code principal, tu le places au début de ta classe :

Code :
  1. ErrorFrame errorFrame = new ErrorFrame();
  2. System.setOut( new PrintStream( errorFrame.getOutputStream(), true));

n°648868
uriel
blood pt.2
Posté le 19-02-2004 à 18:22:57  profilanswer
 

sympa... :jap:


---------------
IVG en france
n°650377
roievil
Taking Fire, Need Assistance..
Posté le 21-02-2004 à 00:04:29  profilanswer
 

c'est bien beau merci pour la classe
 
Autre chose : comment faire pour que l'affichage soit en direct et qu'il ne faille pas attendre la fin de tout le programme?
 
est ce une histoire de repaint?  
 
a+

n°650639
veryfree
Posté le 21-02-2004 à 17:59:13  profilanswer
 


 
http://jchatirc.sf.net/veryfree/veryfree_plusun.gif


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  afficher smplment le contenu de la cnsole et la sortie d'autre scripts

 

Sujets relatifs
comparer le contenu de deux fichiersExtraire le contenu binaire d'un fichier vers une chaine de caracteres
[HTML/JS ] Afficher un texte en fonction d'une combobox[VB Excel] Comment définir une variable avec le contenu d'une autre ?
Sortie de NetBeans IDE 3.6 BetaFPDF : je n'arrive pas à afficher le résultat de ma requête [résolu]
enregistrer / afficher une image dans une base mysql[PHP] Afficher date
Afficher calendrier de windowsClient IRC qui supporte les scripts Python ?
Plus de sujets relatifs à : afficher smplment le contenu de la cnsole et la sortie d'autre scripts


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR