Thread + jTextArea [Résolu]

Signaler
Messages postés
84
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
28 mars 2011
-
Messages postés
84
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
28 mars 2011
-
Bonjour ,

j'ai un petit probleme avec mon programme: J ai un thread qui toutes les X secondes doit m affichier une ligne d'un fichier dans une jTextArea.

Ma fonction qui s execute toutes les X secondes :

 public void Creernews()
    {
             try
             {
                InputStream ips=new FileInputStream(News.txt");
                InputStreamReader ipsr=new InputStreamReader(ips);
                BufferedReader br=new BufferedReader(ipsr);
                String ligne;
               
                if((ligne=br.readLine())!=null)
                {
                    jTextAreaNews.setText(ligne);
                }
                else
                    br.close();
             }
             catch( IOException e )
             { Err_Msg(e.getMessage() );
        }
    }

Mon probleme est qu'il m'affiche tout le temps la même ligne. Comment puis-je manipuler le readLine pour qu'il me lise chaque fois la ligne suivante lorsqu il arrive dans la fonction ??
Toutes les lignes du fichier doivent être affichées ligne par ligne.

Merci !

8 réponses

Messages postés
545
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
28 septembre 2011
2
Salut,

public void initialisation() {
     br=new BufferedReader(new InputStreamReader(new FileInputStream(News.txt")));
}

public void Creernews()   {
 try  {
     if (br == null) initialisation();
        String ligne;
        if((ligne=br.readLine())!=null)        {
             jTextAreaNews.setText(jTextAreaNews.getText()+"\n"+ligne);
         }
         else {
                br.close();
          }
           catch( IOException e )
             { Err_Msg(e.getMessage() );
        }
    }

Par ailleurs, avec "br.close()" tu risque d'avoir quelques prblèmes à la fin e ton fichier. Il serait judieux de rajouter un "tonThread.interrupt();" en même temps que tu fermes ton flux.

gmi19oj19
Messages postés
545
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
28 septembre 2011
2
Salut,

Ton erreur est une faute d'inatention. A chaque fois que tu appelles ta méthodes, tu réinitialises ton BufferedReader, qui redémarre donc au début de ton fichier.

Il faut donc que tu déclares leBufferedReader en instance de classe et que tu l'initialises avant le premeir appel de ta méthode.

Par ailleurs, il faut que tu remplaces :

  jTextAreaNews.setText(ligne);

par

  jTextAreaNews.setText(jTextAreaNews.getText()+"\n"+ligne);

Sinon chaque nouvelle ligne remplacera l'anciene ^^

gmi19oj19
Messages postés
84
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
28 mars 2011

Tu saurais pas me donner un exemple pour le BufferedReader , parce que je vois pas ou je dois l initialiser.

Merci !
Messages postés
84
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
28 mars 2011

Ok , mais le problème est qu il connait pas la variable br, donc pour : if (br == null) initialisation(); .
Il faut que j'initialise la variable en static ? Si oui , br est de quel type ?

Merci !
Messages postés
545
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
28 septembre 2011
2
Salut,

br c'est ton BuffereReader que tu déclares dans ta classe, avec ton JTextArea, toussa ^^

gmi19oj19
Messages postés
84
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
28 mars 2011

Maintenant j initialise : public  BufferedReader br=new BufferedReader(null); .

Mais lorsque je fait un new de la classe qui contient le creerNews , il me lance :

.NullPointerException
        at java.io.Reader.(Reader.java:61)
        at java.io.BufferedReader.(BufferedReader.java:76)
        at java.io.BufferedReader.(BufferedReader.java:91)
Messages postés
84
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
28 mars 2011

Ok , j ai regle un probleme. public  BufferedReader br=null;

Mais il m affiche toujours la meme ligne du fichier.
Messages postés
84
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
28 mars 2011

Deuxieme probleme resolu, un petit static devant et ca marche.

Merci pour ton aide !!