comment ralentir une boucle dans java

fahdmustapha Messages postés 14 Date d'inscription vendredi 5 mars 2010 Statut Membre Dernière intervention 26 décembre 2011 - 24 déc. 2011 à 17:24
fahdmustapha Messages postés 14 Date d'inscription vendredi 5 mars 2010 Statut Membre Dernière intervention 26 décembre 2011 - 26 déc. 2011 à 14:48
salut à tous;
voilà j'ai une jframe dans laquelle ce trouve un TextArea et un button quand je clique sur le button le contenu d'un fichier txt s'affiche ligne par ligne dans TextArea grâce à une boucle mais l'affichage est rapide.
j'aimerai savoir comment faire pour que ma boucle quand elle affiche une ligne attend 0.5 seconde puis elle affiche la seconde ligne.
Est-ce possible ?

voici ma boucle :

while ((ligne=br.readLine())!=null){

sb.append(ligne);
sb.append("\n");
ligne=br.readLine();
}
merci pour vos réponse

9 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
24 déc. 2011 à 17:38
Bonjour,

Pour celà, je te conseil d'utiliser un thread qui affiche chacune des lignes. Heureusement que c'est moi qui t'ai donné ce code sur un autre sujet sinon, je n'aurais pas compris ce que tu faisais.

Je te conseil d'utiliser cette source : http://www.javafr.com/codes/LIRE-ECRIRE-FICHIERS-TEXTE_52348.aspx

De cette manière, tu pourras récupérer le contenu d'un fichier texte dans une arrayList.

Ensuite, tu peux faire une boucle comme celle-ci :
int curentPos=0;
while(curentPos<lignes.size()){
   textArea.setText(textArea.getText()+"\n"+lignes.get(curentPos));
   textArea.repaint();
   //Attente de 500 mili secondes
   //Il y a une exception à catcher
   Thread.sleep(500);
   curentPos++;
}

0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
24 déc. 2011 à 17:40
Il manque une ligne avec int curentPos=0 :

List<String> lignes=GestionFichiers.lireFichier("C:\\fichier.txt");
0
fahdmustapha Messages postés 14 Date d'inscription vendredi 5 mars 2010 Statut Membre Dernière intervention 26 décembre 2011
24 déc. 2011 à 17:55
Merci Julien39 je vais jeter un coup d'oeil dessus
0
fahdmustapha Messages postés 14 Date d'inscription vendredi 5 mars 2010 Statut Membre Dernière intervention 26 décembre 2011
24 déc. 2011 à 18:43
Bonsoir julien 39
encore merci de m'avoir aidé mais ce que j'ai remarque que lorsque j'appuis sur Button1 il y'a un temps d’attente long puis soudainement tous le contenu du fichier s'affiche sur JtextArea.
moi j'aimerai bien que la première ligne du document texte s'affiche puis un petit temps d'attente ensuite la deuxième ligne s'affiche puis un temps d'attente et ainsi de suite jusqu'à ce que le contenu de mon fichier s'affiche sur JTextArea.
Est_ce que c'est possible ?
0

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

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
24 déc. 2011 à 19:36
Ta fenêtre ne doit pas être rafraichie entre deux itérations de la boucle.

Peux tu me montrer ton code, je te donnerai un code qui gère proprement les Threads pour faire ca. Par contre, il va falloir attendre demain après midi.

a+
0
fahdmustapha Messages postés 14 Date d'inscription vendredi 5 mars 2010 Statut Membre Dernière intervention 26 décembre 2011
24 déc. 2011 à 22:27
voici le code quand je clique sur button1
 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
         List<String> lignes=GestionFichiers.lireFichier("C:\\exemple.txt");
         int curentPos=0;
          while(curentPos<lignes.size()){
               jTextArea1.setText(jTextArea1.getText()+"\n"+lignes.get(curentPos));
               jTextArea1.repaint();
            try {
                Thread.sleep(50);
                curentPos++;
            } catch (InterruptedException ex) {
                Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
            }
               
              
}
    }    


et ceci est la classe Gestion_Fichiers
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;

public class GestionFichiers {
public static List<String> lireFichier(String nomFichier){
BufferedReader fluxEntree=null;
String ligneLue;
List<String> lignes = new ArrayList<String>();
try{
fluxEntree = new BufferedReader(new FileReader(nomFichier));
ligneLue = fluxEntree.readLine();
while(ligneLue!=null){
lignes.add(ligneLue);
ligneLue = fluxEntree.readLine();
}
}
catch(IOException exc){
exc.printStackTrace();
}
try{
fluxEntree.close();
}
catch(IOException e){
e.printStackTrace();
}
return lignes;
}
}


encore Merci julien39
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
25 déc. 2011 à 21:36
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        List<String> lignes=GestionFichiers.lireFichier("C:\\exemple.txt");
        AnimationListe animateur = new AnimationListe(lignes, jTextArea1);
        animateur.start();
    }


public class AnimationListe extends Thread {

    private List<String> contenu;
    private JTextArea zoneTexte;

    public AnimationListe(List<String> contenu, JTextArea zoneTexte){
        this.contenu=contenu;
        this.zoneTexte=zoneTexte;
    }

    @Override
    public void run(){
        int curentPos=0;
        while(curentPos<contenu.size()){
            zoneTexte.setText(zoneTexte.getText()+"\n"+contenu.get(curentPos));
            zoneTexte.repaint();
            try {
                Thread.sleep(500);
                curentPos++;
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
        }
    }

}
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
25 déc. 2011 à 21:37
Sur l'ordinateur que j'utilise, je n'ai pas installé de compilateur java, je n'ai donc pas testé, il y a peut être quelques petites erreurs que tu rectifiera facilement je pense
0
fahdmustapha Messages postés 14 Date d'inscription vendredi 5 mars 2010 Statut Membre Dernière intervention 26 décembre 2011
26 déc. 2011 à 14:48
Merci Julien39 ça marche très bien tous est en règle .
0