Thread + jTextArea [Résolu]

Messages postés
84
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
28 mars 2011
- - Dernière réponse : Spawn3107
Messages postés
84
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
28 mars 2011
- 3 juin 2007 à 12:17
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 !
Afficher la suite 

8 réponses

Meilleure réponse
Messages postés
546
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
28 septembre 2011
2
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de gmi19oj19
Messages postés
546
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
28 septembre 2011
2
0
Merci
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
Commenter la réponse de gmi19oj19
Messages postés
84
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
28 mars 2011
0
Merci
Tu saurais pas me donner un exemple pour le BufferedReader , parce que je vois pas ou je dois l initialiser.

Merci !
Commenter la réponse de Spawn3107
Messages postés
84
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
28 mars 2011
0
Merci
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 !
Commenter la réponse de Spawn3107
Messages postés
546
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
28 septembre 2011
2
0
Merci
Salut,

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

gmi19oj19
Commenter la réponse de gmi19oj19
Messages postés
84
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
28 mars 2011
0
Merci
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)
Commenter la réponse de Spawn3107
Messages postés
84
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
28 mars 2011
0
Merci
Ok , j ai regle un probleme. public  BufferedReader br=null;

Mais il m affiche toujours la meme ligne du fichier.
Commenter la réponse de Spawn3107
Messages postés
84
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
28 mars 2011
0
Merci
Deuxieme probleme resolu, un petit static devant et ca marche.

Merci pour ton aide !!
Commenter la réponse de Spawn3107