Thread + jTextArea

Résolu
Spawn3107 Messages postés 84 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 28 mars 2011 - 2 juin 2007 à 23:30
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 !

8 réponses

gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
3 juin 2007 à 11:26
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
3
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
3 juin 2007 à 09:13
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
0
Spawn3107 Messages postés 84 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 28 mars 2011
3 juin 2007 à 11:14
Tu saurais pas me donner un exemple pour le BufferedReader , parce que je vois pas ou je dois l initialiser.

Merci !
0
Spawn3107 Messages postés 84 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 28 mars 2011
3 juin 2007 à 11:47
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 !
0

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

Posez votre question
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
3 juin 2007 à 11:51
Salut,

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

gmi19oj19
0
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:10
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)
0
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:13
Ok , j ai regle un probleme. public  BufferedReader br=null;

Mais il m affiche toujours la meme ligne du fichier.
0
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
Deuxieme probleme resolu, un petit static devant et ca marche.

Merci pour ton aide !!
0