Probléme méthode paintComponent()

Probléme méthode paintComponent() - Java - Programmation

Marsh Posté le 18-09-2008 à 15:20:01    

Voici mon code:
 
 
public class Fenetre  extends JFrame  
 
{    
        private JButton bouton = new JButton("Ajouter un mot" );
        private JButton bout = new JButton("Afficher la liste" );
        private JLabel label = new JLabel("Titre" );
        public JPanel pan = new Paneau();
         
     
    public Fenetre() throws IOException
    {
      setTitle("Tous mes films et jeux" );
      setSize(500,300);
      Container c = getContentPane();
       
      c.setLayout(new FlowLayout());
      c.add(bouton);
      c.add(bout);
       
     bouton.addActionListener(new BoutonListener());
     bout.addActionListener(new BoutListener());
     
       
       pan.setBackground(Color.red);
       c.add(pan);
       
      setLocationRelativeTo(null);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
      pan.setLayout(new BorderLayout());
     
 
     JPanel south = new JPanel();
 
      south.add(bouton);
      south.add(bout);
      pan.add(south, BorderLayout.SOUTH);
       
      label.setHorizontalAlignment(JLabel.CENTER);
 
      pan.add(label, BorderLayout.NORTH);
       
      this.setContentPane(pan);
       
     }
     
     
     class BoutonListener  implements ActionListener
     {
         private String test;
         
          public void actionPerformed(ActionEvent e)  
          {  
               test=JOptionPane.showInputDialog(null,"Entrez mot" );
               FileWriter writer = null;
 
              try{
              writer = new FileWriter("fichier.txt", true);
              writer.write(test);
               writer.write("\n" );
              }catch(IOException ex){
              ex.printStackTrace();
             }finally{
              if(writer != null)
               {try
                {
               writer.close();
               }catch (IOException ex)
               {
                }
             }
          }
        }
     }
     
  class BoutListener  implements ActionListener
    {
       
       public void actionPerformed(ActionEvent e)  
                {  
                BufferedReader LecteurBufferise = null;
    String Chemin = "fichier.txt";
    String ligneDonnee;
    boolean eof = false;
    try {
 
     
      LecteurBufferise = new BufferedReader(new FileReader(Chemin));
      while (eof != true) {
     
        ligneDonnee = LecteurBufferise.readLine();
        if (ligneDonnee != null )  
        {  if(ligneDonnee=="\n" )
           {    
         System.out.println(ligneDonnee);
           }
           else
           {
             System.out.println("Erreur" );
           }
           
        }
        else {
          eof = true;
        }
      }
    }
    catch (FileNotFoundException ex) {
      System.out.println("Fichier Non Trouvé !!" );
    }
    catch (IOException ex) {
      System.out.println("Erreur lecture ligne fichier !!" );
    }
    finally {
      try {
        LecteurBufferise.close();
      }
      catch (IOException ex1) {
        System.out.println("Erreur fermeture fichier !!" );
      }
    }
               
                }
    }
}    
 
public class Paneau extends JPanel
{  
    public void paintComponent(Graphics g)  
    {  
     super.paintComponent(g);
     g.drawString ("", 20, 30);    
    }
   
}
 
Ma fenêtre contient un bouton "Ajouter un mot" , en cliquant sur ce bouton je peux ajouter un mot dans un fichier texte.
J'aimerai que le 2eme bouton "Afficher la liste" , affiche tous les mots contenu dans mon fichier texte dans la fenêtre et non pas en console....( ce que mon code fait actuellement)
 
 Comment puis-je faire pour que la méthode paintComponent() affiche les mots contenu dans mon fichier avec g.drawString???
 
Il y a t-il une autre facon de procéder?  
 
Merci

Reply

Marsh Posté le 18-09-2008 à 15:20:01   

Reply

Marsh Posté le 18-09-2008 à 18:52:10    

Salut,
Désolé j'ai pas regardé tout ton code, mais
la question c'est de savoir comment afficher des mots dans un JComponent qui est un JPanel ?
 
La méthode simple serait, si tu arrives à récupérer tes mots à partir de ton fichier texte, d'itérer parmi ces mots, et entrer un code du genre (chuis complètement à l'aveugle, j'ai pas d'éditeur ni rien, je t'écris ce code au feeling, à toi de corriger si ça te convient) :
Dans ton paintComponent, tu fais :
 

Code :
  1. Graphics2D g2 = (Graphics2D) g;
  2. int lineHeight = g2.getFont().getAscent(); // Un truc comme ça, ça te récupère la hauteur en pixels d'une ligne de texte avec la police courante, c'est utile sachant que dans un drawString, la position y est la position de la ligne de base des caractères.
  3. int nbMots = <ton nombre de mots>;
  4. String mots[] = <ton tableau de mots, ou arraylist, vector, comme tu veux, en tout cas en-dessous t'as un toArray>;
  5. for (int indLigne=0; indLigne<nbMots; indLigne++) {
  6. g2.drawString (mots[indLigne], 0, (lineHeight+4)*(indLigne+1));
  7. }


 
Ça t'affiche tous tes mots les uns sous les autres dans ton JPanel.
Sinon si tu veux les afficher en prenant en compte le retour à la ligne, faut chercher un truc comme une classe SwingUtilities (dépréciée) ou un équivalent qui s'appelle GraphicsUtilities un truc du genre.
Désolé hein, je te dis tout sans vérifier donc c'est ptet inexact, mais ça te donne une piste  :o  
 
++ dis-moi si ça fonctionne


---------------
Site de rencontre
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed