A propos les cliks sur les bouton dans java

Résolu
Signaler
Messages postés
28
Date d'inscription
samedi 10 mars 2012
Statut
Membre
Dernière intervention
15 décembre 2012
-
Messages postés
28
Date d'inscription
samedi 10 mars 2012
Statut
Membre
Dernière intervention
15 décembre 2012
-
Bonjour,
S'il vous plais j'i une question qui parait assez facile mais j'ai pas arrivé à la faire. En fait j'ai un fichier txt qui contient plusieurs ligne. et j'ai une interface java qui contient un bouton et un espace blanc(textField). Ma question c'est comment faire pour a chaque fois que je clik sur le bouton il m'affiche la ligne dans l'espace blanc.
En fait j'ai essayé de deux façon et ça n'a pas marché:
1- Le programme suivant m'affiche seulement la dernière ligne
public void actionPerformed(ActionEvent e)
{
String ch ="";

try{
BufferedReader br= new BufferedReader(new FileReader("result1.txt"));

while((ch=br.readLine())!=null){
if(e.getSource()==b1)
{
T1.setText(""+ch);

}
}
}
catch(FileNotFoundException g)
{
System.out.println("eee");
}
catch(IOException f)
{
System.out.println("fff");
}
}
2- Ce programme m'affiche seulement la première ligne
public void actionPerformed(ActionEvent e)
{
String ch ="";

try{
BufferedReader br= new BufferedReader(new FileReader("result1.txt"));

ch=br.readLine();
if(e.getSource()==b1)
{
T1.setText(""+ch);

}
br.readLine();

}
catch(FileNotFoundException g)
{
System.out.println("eee");
}
catch(IOException f)
{
System.out.println("fff");
}
}

Est ce que quelqu'un à une idée comment faire pour résoudre ce problème
et merci d'avance.

6 réponses


Re,

Je n'ai pas eu le temps de terminer, mais tu as l'essentiel:

   import javax.swing.*; 
   import java.awt.*; 
   import java.awt.event.*;
   import java.io.BufferedReader;
   import java.io.FileReader;
   import java.io.IOException;
   import java.io.FileNotFoundException;

   public class FenBoutonLireTxt extends JFrame implements ActionListener 
   { 
      private JButton lireUneLigne; 
      private JButton fin;
      private static BufferedReader br;
      private String ligne = "";
      
      public FenBoutonLireTxt() 
      { 
         setTitle ("LIRE UN FICHIER .txt"); 
         setSize (300, 200) ; 
         getContentPane().setLayout(new FlowLayout());
      
         lireUneLigne = new JButton ("LIGNE SUIVANTE");
         getContentPane().add(lireUneLigne); 
         lireUneLigne.addActionListener(this);
         
         fin = new JButton ("FIN"); 
         getContentPane().add(fin); 
         fin.addActionListener(this);
      }
      
      public void lireLigne()
      {
         try
         {
            if((ligne = br.readLine())!=null)
               System.out.println("Ligne lue = " + ligne); //Remplacer par T1.setText(ligne);
            else
               System.out.println("Fin de fichier");
         }
            catch(IOException ioe)
            {
               System.out.println("IOException");
            }
      }
      
      public void actionPerformed( ActionEvent e)
      {
         ligne = "";
      
         Object qui = e.getSource();
      
         if(qui == lireUneLigne)
            lireLigne();
         else
            if(qui == fin) 
            {
               System.out.println("FIN FIN FIN FIN");
               System.exit(0);
            } 
      }
   
      public static void main (String args[]) 
      {
         try
         {
            br = new BufferedReader(new FileReader("fichier.txt"));
         }
            catch(FileNotFoundException g)
            {
               System.out.println("Fichier non trouvé");
            }
         FenBoutonLireTxt fen = new FenBoutonLireTxt() ; 
         fen.setVisible(true) ;
         
         fen.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
      }
   }



...\ Dan /...

Salut,
1- "Le programme suivant m'affiche seulement la dernière ligne"

C'est normal tu lis ton fichier dans un boucle While jusqu'à la fin tout en envoyant chaque ligne lue dans le même JTextField T1:
ainsi la 2ème ligne remplace la 1ère dans T1, la 3ème remplace la 2ème, ... et la dernière l'avant dernière.

Il faudrait que tu utilises JTextArea qui peut contenir plus d'une ligne contrairement au JTextField.



2- "Ce programme m'affiche seulement la première ligne"


À toi de voir pourquoi...

Cordialement,
...\ Dan /...
Messages postés
28
Date d'inscription
samedi 10 mars 2012
Statut
Membre
Dernière intervention
15 décembre 2012

Bonsoir,
Merci pour l'aide mais vous n'avez pas compris mon problème. Ce que je veux que a chaque fois que j'appuis sur le bouton le textField m'affiche la première ligne et passe à la suivante. autrement dit, je Click sur le bouton il m'affiche la première ligne puis je Click une autre fois il m'affiche la deuxième ligne puis une troisième fois il m'affiche la troisième ligne et ainsi de suite jusqu'à la fin de fichier.
Merci d'avance
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
11
Salut,

Alors je dirais que tu dois lire ton fichier et mettre chaque ligne dans une liste ou dans un vecteur;
et quand tu cliques sur le bouton, tu affiches l'élément de ta liste/ de ton vecteur suivant...

Ps,

Le petit code donné ci-dessus et compilable et exécutable.
Ce qui n'est pas encore fait c'est la JTextField, l'affichage dans T1 (attention au nom, t1 serait mieux) est simulé par println à chaque clique sur le bouton...


...\ Dan /...
Messages postés
28
Date d'inscription
samedi 10 mars 2012
Statut
Membre
Dernière intervention
15 décembre 2012

Bonsoir,
Merci bien danimo ça marche très bien.