[JAVA] [debutant] To thread or not to thread?

To thread or not to thread? [JAVA] [debutant] - Java - Programmation

Marsh Posté le 17-02-2004 à 17:47:00    

Bonjour,
 
mon programme dans sa forme actuelle est sensé lancer une application (CAP3) puis afficher dans un JDialog sa sortie console (les lignes qui s'affichent lorsque l'on lance CAP3  a partir de la console).
 
Or il faut attendre la fin de tout le programme JAVA pour que s'affiche dans le JDialog le texte en question
 
est ce que c'est a ca que servent les threads et pourriez vous me donner une exemple de comment m'en servir ici
 
code du Jdialog :  
 

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 + "\n" ) ;
  32.   System.out.println(line) ;
  33.   line = br.readLine() ;
  34.  }
  35.  Container panneau = getContentPane();
  36.  panneau.add(areaScrollPane) ;
  37. }
  38. }


 
et un extrait du programme principal :  
 
 

Code :
  1. executer.addActionListener(
  2.   new ActionListener() {
  3.    public void actionPerformed(ActionEvent executer) {
  4.     try {       commandeCAP3 = ExtractionsDiverses.CreerCommande(valeurCommande1, cheminSaveSeq3) ;
  5.       System.out.println("commande cap 3 :" + commandeCAP3) ;
  6.       Process process2 = runtime.exec(commandeCAP3);
  7.       // récupération de la sortie console de CAP3        
  8.       BufferedReader b2 = new BufferedReader (new InputStreamReader(process2.getInputStream())) ;
  9.       String line2 = b2.readLine() ;
  10.       // afficher la sortie console             
  11.       while (line2!=null) {               
  12.                
  13.        System.out.println(line2) ;
  14.            
  15.        line2 = b2.readLine() ;
  16.            
  17.       }
  18.       // ouvre une fenetre contenant la sortie console Cap3
  19.       FenetreSortieConsole fr2 = new FenetreSortieConsole(b2, SORTIE_CAP3);
  20.       fr2.show();
  21.       process2.waitFor();
  22.     } catch (Exception e) {
  23.      JOptionPane messageAide = new JOptionPane();
  24.      JOptionPane.showMessageDialog(null, e);
  25.     }
  26.                            
  27.          
  28.     dispose();
  29.    }
  30.   }
  31.          
  32.  );


 
Note : j'ai essayé de juste afficher un fichier deja créé pour cérifier que ce n'etait pas la sortie console qui etait defectueuse et on doit encore attendre la fin de tout le programme  
 
et puis j'affiche la sortie console alors je vois bien qu'elle est prête

Reply

Marsh Posté le 17-02-2004 à 17:47:00   

Reply

Marsh Posté le 17-02-2004 à 17:54:52    

j'ai la flemme de tout lire, mais je dirais qu'il te faut un SwingWorker
 
http://java.sun.com/products/jfc/t [...] eads2.html


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 17-02-2004 à 19:28:19    

j'ai pas trop bien compris l'utiliét de cette classe, est ce pour améliorer l'utilisation des threads? Il me semble qu'elle sert a effecteuredes programmes en tachede fond ce qui n'Est aps exactement cedont j'ai besoin je voudrais qu'au cours de l'execution du programme on affiche un resultat intermédiaire
 
en fait l'idéal ce serait d'avoir affiché le défilement de la console de mon interpreteur (ecplipse) alors qu j'ai juste lancé mon jar avec la ligne de commande java -jar xxx.java de manière a suivre le déroullement sans eclipse.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed