Interface graphique java [Résolu]

cs_tamalgo 19 Messages postés vendredi 25 mars 2011Date d'inscription 30 octobre 2012 Dernière intervention - 1 nov. 2011 à 17:56 - Dernière réponse : cs_tamalgo 19 Messages postés vendredi 25 mars 2011Date d'inscription 30 octobre 2012 Dernière intervention
- 5 nov. 2011 à 15:01
Salut tout le monde,
voici mon code:
package LesClasses;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Vector;
import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Asma
 */
public class ThreadSystem  extends Thread{

    BlockingDeque q=new LinkedBlockingDeque();
    BlockingDeque buffersave=new LinkedBlockingDeque();
    public Vector v;
    private final Vector b;
    ArrayList ThreadList=new ArrayList();
    //private final File repertoire;
    private ManipulerDocument m=new ManipulerDocument();
    private final String nomrepertoire;
    private int n;
    private DataGuide dgg=new DataGuide();
    private FichierInverse fi=new FichierInverse();
    private org.jdom.Document d;
    private ThreadSecondaire tscd;
    public boolean bl;

    public ThreadSystem(Vector b,String nomrepertoire,int n){
        this.b=b;
        this.nomrepertoire=nomrepertoire;
        this.n=n;


    }

    public int verifierThread(){
        int j=0;
        for(int i=0;i<ThreadList.size();i++){
            if(((ThreadSecondaire) ThreadList.get(i)).Etat==true){
               j++;
            }
        }
        return j;
    }

    //@Override


       // System.out.println(">> Création des threads");
        //Création des threads secondaires
 public void CreationThread(){
      Vector vec = m.lesListesDeRepertoires(nomrepertoire,n);

        for(int i=0;i<vec.size();i++){
            ArrayList liste=(ArrayList) vec.get(i);
            ThreadSecondaire ts=new ThreadSecondaire(i,liste ,b);
            ThreadList.add(ts);

        }
 }
       // System.out.println(">> Lancement des threads Phase 1");
        //Lancement des threads secondaires
 public void LancerThread(){
            for(int jj=0;jj<ThreadList.size();jj++){
            ThreadSecondaire trs=(ThreadSecondaire) ThreadList.get(jj);
            trs.start();
        }
      }
public  void    Attente(){
        //Attente de la fin de la phase 1
        System.out.println(">> Attente...");
        while(verifierThread()<ThreadList.size()){
            try {
               sleep(2000);
            } catch (InterruptedException x) {
                Logger.getLogger(ThreadPrincipal.class.getName()).log(Level.SEVERE, null, x);
            }
        }
  }
   //     System.out.println(">> Création du DG principal");

   //Création du dataguide principal
 public org.jdom.Document  creationDataGuide(){
        Vector vc = null;
        for(int r=0;r<ThreadList.size();r++){
            try {
                 //  System.out.println(r);
                //System.out.println(ThreadList.size());
               vc = dgg.getCheminfinalMinMax((ArrayList) b.get(r));
               d=dgg.construireDataGuideGlobale((ArrayList)b.get(r), d);
                } catch (IOException xx) {
                Logger.getLogger(ThreadPrincipal.class.getName()).log(Level.SEVERE, null, xx);
            }

        }
        v=vc;
     return d;

        //this.setDG(vc);
   }
        //Lancement de la seconde phase
       // System.out.println(">> Lancement des threads Phase 2");
 public void LancerThread2(){
        
            for(int i=0;i<ThreadList.size();i++){

                ((ThreadSecondaire)ThreadList.get(i)).setDG(v);
                ((ThreadSecondaire)ThreadList.get(i)).setEtape(2);
        
        }
   }
        //Attente de la fin de la seconde phase

        //Lancement de la Création du fichier inverse principal
     //   System.out.println(">> Création du fichier inverse principal");
   public int calculerFC(){
            int fc=0; //Méthode de création du fichier inverse principal

            for(int kk=v.size();kk<b.size();kk++){
            Vector vterme=(Vector) b.get(kk);
            int dert=vterme.size()-1;
            CTermes interm=(CTermes) vterme.get(dert);
            String nbf= interm.getTerme();
            Integer monnombre=new Integer(nbf);
            int nbnfv = monnombre.intValue();
            vterme.remove(dert);

            fc=fc+nbnfv;
            }
   return fc;
   }
       public org.jdom.Document creationFichier(int fc){
            fi.remplireTermeNbNoued((Vector)b,v.size());
         //fi.afficherTousLesTermes((Vector) b.get(v.size()));

            org.jdom.Document fig = null;
           for(int j=v.size();j<b.size();j++){
             fig=fi.construireFIG((Vector) b.get(j), fc);
            }
            return fig;
       }

       //Tuer tous les threads.
       public void tueThread(){
            for(int k=0;k<ThreadList.size();k++){
                 ThreadSecondaire t=(ThreadSecondaire) ThreadList.get(k);
                  t=null;
             }
       }



    public void setDG(Vector w){
          v.clear();
          DGElement ldg;
           for(int i=0;i<w.size();i++){
               ldg=new DGElement(((DGElement)w.get(i)).chemin);
               ldg.setMax(((DGElement)w.get(i)).max);
               ldg.setMin(((DGElement)w.get(i)).min);
               this.v.add(ldg);
           }
    }

ma fenetre:
  import LesClasses.CTermes;
import LesClasses.DataGuide;
import LesClasses.FichierInverse;
import LesClasses.ManipulerDocument;
import LesClasses.ThreadSecondaire;
import LesClasses.ThreadSystem;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Vector;
import javax.swing.JFileChooser;

public class IFTIParallele extends javax.swing.JFrame implements Runnable{


    /** Creates new form IFTIParallele */
    public IFTIParallele() {
        initComponents();
        
    }
 private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
                 JFileChooser fc=new JFileChooser();
                 fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
                 fc.setMultiSelectionEnabled(false);
                 fc.setDialogTitle("Select a Directory");
                 int result=fc.showOpenDialog(null);
                if(result==JFileChooser.APPROVE_OPTION ){
                String dirName=fc.getSelectedFile().getAbsolutePath();
                jTextField1.setText(dirName);
                }   // TODO add your handling code here:
    }       
  private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            nomrepertoire=jTextField1.getText();
                     String  nn=jTextField2.getText();
                     n=Integer.valueOf(nn);
                    run();
                    FinIndexation FI=new FinIndexation();
                     FI.setVisible(true);
                    
                    //// Vector q=new Vector();
                    //ThreadPrincipal tp=new ThreadPrincipal(q,nomrepertoire,n);
                    //tp.start(); // TODO add your handling code here:
    }        
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {                                         
          String s=dgg.convertirXMLString(d1);
          String s1=dgg.convertirXMLString(d2);
          jTextArea1.append(s);
          jTextArea2.append(s1);

                   // TODO add your handling code here:
    }         
 private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {                                         
               System.exit(0);        // TODO add your handling code here:
    }      
 public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new IFTIParallele().setVisible(true);
            }
        });
    }
 private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton4;
    private javax.swing.JButton jButton5;
    private javax.swing.JButton jButton6;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextArea jTextArea2;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JTextField jTextField4;
    private javax.swing.JTextField jTextField5;
    private javax.swing.JTextField jTextField6;
    private javax.swing.JTextField jTextField7;
    // End of variables declaration
    public Vector v;
    private final Vector b=new Vector();
    private ManipulerDocument m=new ManipulerDocument();
    private String nomrepertoire;
    private int n;
    private DataGuide dgg=new DataGuide();
    private FichierInverse fi=new FichierInverse();
    private org.jdom.Document d;
    private  org.jdom.Document d1;
    private org.jdom.Document d2;
 public void run() {
        jTextField6.setText("actif");
        ThreadSystem ts=new ThreadSystem(b, nomrepertoire, n);

        ts.CreationThread();
        ts.LancerThread();
        jTextField6.setText("attente");
        ts.Attente();
       jTextField6.setText("actif");
        d1=ts.creationDataGuide();
        ts.LancerThread2();
       jTextField6.setText("attente");
        ts.Attente();
       jTextField6.setText("actif");
        int fc=ts.calculerFC();
        d2=ts.creationFichier(fc);
      }
    

mon problème est dans la méthode run la classe IFTIParallele je fait remplie mon JTextField6 et a chaque fois je modifie le contenu de jTextField6 a l'exécution de m?application on cliquant sur jBouton1 j'obtient le dernier état de thread(mon application) j'ai supprimer tous lis instructions de JTextField6 on laissons que la première, s'affiche mais après traitement non pas au début alors je pense que c'est un problème de Listener je ne sais pas le résoudre , Aide moi SVP SVP
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
cs_tamalgo 19 Messages postés vendredi 25 mars 2011Date d'inscription 30 octobre 2012 Dernière intervention - 5 nov. 2011 à 15:01
3
Merci
Bonjour,
Merci pour le conseil et la réponse Julien39, voila ce que j'ai fait 1- enlever la classe ThreadSystem et créé tous ses méthodes dans ma fenêtre et entre un setText et un autre (un append et autre dans la méthode ci-dessous car j'ai décidé de faire apparaitre tous les états, donc même chose pour setText) j'ai fait un sleep puis dans actionPerformed créer un thread de ma fenêtre et le lancer voici les modifications :
public void run() {
        jTextArea4.append(" "+"actif              creation et lancement des Threads\n");
        try {
            Thread.sleep(2000);
        } catch (InterruptedException ex) {
            Logger.getLogger(IFTIParallele.class.getName()).log(Level.SEVERE, null, ex);
        }

        nomrepertoire=jTextField1.getText();
                     String  nn=jTextField2.getText();
                     n=Integer.valueOf(nn);
      CreationThread(nomrepertoire, n);


        LancerThread();
               jTextArea4.append(" "+"attente\n");

      

        Attente();
        jTextArea4.append(" "+"actif              creation de DataGuide\n");
        d1=creationDataGuide();
        LancerThread2();
        try {
            Thread.sleep(2000);
        } catch (InterruptedException ex) {
            Logger.getLogger(IFTIParallele.class.getName()).log(Level.SEVERE, null, ex);
        }
        jTextArea4.append(" "+"attante\n");
        Attente();
        jTextArea4.append(" "+"actif              creation de fichier Inverse\n");
        int fc=calculerFC();
        d2=creationFichier(fc);
        Attente();
         jTextArea4.append(" "+"terminer index");

          FinIndexation FI=new FinIndexation();
           FI.setVisible(true);
      }
        

    }

pour le actionPerformed:
 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
                    threadf=new Thread(this);
                    threadf.start();

}
 

Merci encore une fois

Merci cs_tamalgo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_tamalgo
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 3 nov. 2011 à 17:59
0
Merci
Bonjour,

Pour obtenir plus de réponses, ne donnes pas tout ton code mais seulement les parties utiles. Dans ton message, impossible de repérer l'erreur.

Je pense que tu fais des setVisible(false) puis que tu fais a nouveau des setVisible(true). Je te conseil d'utiliser des DISPOSE_ON_CLOSE et de reconstruire la fenêtre. Sachant que les composants doivent êtres initialisés dans le constructeur et pas en attribut de la classe.
Commenter la réponse de cs_Julien39

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.