ajouter un champs de controle

ajouter un champs de controle - Java - Programmation

Marsh Posté le 16-06-2010 à 01:05:22    

bonsoir,
j'ai dans une frame deux JTextfield ou leur données seront enregistrer dans un fichier texte, je veux ajouter pour ses deux champs un controle ,le 1er champs porte le nom et le 2eme porte l'addresse ,j'ai ajouté pres de chaque JTextfield une bouton("test" ) qui verifie à chaque fois si le nouveau nom saisi existe deja ou nom mm chose pour l'addresse,mon fichier ne contient pas des données dupliquées,j'ai realisé une fonction qui parcourir le fichier à chaque clique sur la boutton "test" et vider le champs si le nom deja existe :

Code :
  1. void tester()
  2.    { String fichierContenu= "";
  3.    try
  4.      {
  5.   BufferedReader  fin = new  BufferedReader(new FileReader("c:/ttt.txt" ));
  6.      String ligne,mot="";
  7.      while ( (ligne = fin.readLine()) != null )
  8.        {
  9.      String mot1=d.getText();
  10.    
  11.            StringTokenizer st=new StringTokenizer(ligne," ,.;: " );
  12.            while(st.hasMoreTokens())
  13.               {if(st.equals("name" ))
  14.               {     mot=st.nextToken();
  15.                 if(mot.equals(mot1))
  16.               {  d.setText("" );
  17.               }
  18.               }
  19.               }
  20.        }
  21.      fin.close();
  22.               }
  23.  
  24.    catch(Exception e){}
  25. }


et j'ai ajouté la fonction:

Code :
  1. public void actionPerformed(ActionEvent evt)
  2. {
  3.                     
  4.                    if (evt.getSource() == q)
  5.                                   System.out.println("dddddddddddddd" );
  6.  
  7.                                 tester();
  8.     }


mais ca ne fonctionne pas
pouvez_vous m'aider à le corriger!!
merci  
JButton q=new JButton("test" );

Reply

Marsh Posté le 16-06-2010 à 01:05:22   

Reply

Marsh Posté le 16-06-2010 à 10:15:14    

T'as bien ajouté le listener au bouton ?

Reply

Marsh Posté le 16-06-2010 à 10:38:22    

bonjour,
merci de me reponder
oui j'ai bien ajouté le listener:

Code :
  1. q.addActionListener( this);


mais moi j'ai plusque une bouton peut etre la faute dans la fonction actionperformed??

Code :
  1. public void actionPerformed(ActionEvent evt)
  2. {
  3.                      if (evt.getSource() == s)
  4.                       System.out.println("hhhhhhhhhhhhhh" );
  5.                        this.setVisible(false);
  6.  
  7.                                 remplir();
  8.                                 Resultat f=new Resultat();
  9.                                 f.setVisible(true);
  10.                           else if (evt.getSource() == q)
  11.                                   System.out.println("dddddddddddddd" );
  12.  
  13.                                 tester();
  14.     }


la bouton s fonction tres bien!!!
merci de m'aider

Reply

Marsh Posté le 16-06-2010 à 10:41:50    

Tu bluffes Martoni, ton truc peut meme pas compiler. J'suppose que t'as "enlevé" des trucs du listener pour pas tout montrer, mais vaudrait mieux que tu mettes tout en fait.


Message édité par lasnoufle le 16-06-2010 à 10:43:08

---------------
C'était vraiment très intéressant.
Reply

Marsh Posté le 16-06-2010 à 11:57:25    

Code :
  1. public class FormHote  extends JFrame implements ActionListener
  2. {JTextField d=     new JTextField(20);
  3. JTextField d1=    new JTextField(20);
  4. JButton s,q;
  5. public FormHote()
  6.     {super();
  7.      GridBagLayout layout = new GridBagLayout();
  8.      getContentPane().setLayout(layout);
  9.     JLabel n=new JLabel(" CONFIGURATION D'UNE NOUVELLE HOTE " );
  10.     //    n.setBackground(Color.magenta);
  11.     JLabel t=new JLabel(" NOM " );
  12.             JLabel t1=new JLabel(" adresse " );
  13.  
  14.                  
  15.              JButton q=new JButton("test" );
  16. JButton s=new JButton("save" );
  17.  
  18.  
  19.  
  20.  
  21.  
  22.      c.gridx = 0;
  23.      c.gridy = 1;
  24.      c.anchor = GridBagConstraints.EAST;
  25.      getContentPane().add(t,c);
  26.  
  27.      c1.gridx = 1;
  28.      c1.gridy = 1;
  29.      c1.fill = GridBagConstraints.HORIZONTAL;
  30.      c1.weightx = 100;
  31.      c1.weighty = 0;
  32.      c1.insets = new Insets(1,10,0,20);
  33.      getContentPane().add(d,c1);
  34.      GridBagConstraints c101 = new GridBagConstraints();
  35.      c101.gridx = 2;
  36.      c101.gridy = 1;
  37.      c101.fill = GridBagConstraints.HORIZONTAL;
  38.      c101.weightx = 100;
  39.      c101.weighty = 0;
  40.      c101.insets = new Insets(1,10,0,20);
  41.      getContentPane().add(q,c101);
  42.  
  43.  
  44.      c2.gridx = 0;
  45.      c2.gridy = 2;
  46.      c2.anchor = GridBagConstraints.EAST;
  47.     getContentPane().add(t1,c2);
  48.  
  49.      c3.gridx = 1;
  50.      c3.gridy = 2;
  51.      c3.fill = GridBagConstraints.HORIZONTAL;
  52.      c3.weightx = 100;
  53.      c3.weighty = 0;
  54.      c3.insets = new Insets(1,10,0,20);
  55.      getContentPane().add(d1,c3);
  56.       GridBagConstraints c25 = new GridBagConstraints();
  57.      c25.gridx = 1;
  58.      c25.gridy = 3;
  59.  
  60.      c25.anchor = GridBagConstraints.CENTER;
  61.  
  62.      getContentPane().add(s,c25);
  63.  
  64.     setSize(500,500);
  65.  
  66.     
  67.  
  68.     pack();
  69.  
  70.     setVisible(true);
  71. s.addActionListener( this);
  72. q.addActionListener( this);
  73.  
  74.         }
  75.  
  76.  
  77.      void tester()
  78.  
  79.  
  80.  
  81.         { String fichierContenu= "";
  82.  
  83.         try
  84.  
  85.           {
  86.  
  87.        BufferedReader  fin = new  BufferedReader(new FileReader("c:/ttt.txt" ));
  88.  
  89.           String ligne,mot="";
  90.  
  91.           while ( (ligne = fin.readLine()) != null )
  92.  
  93.             {
  94.  
  95.           String mot1=d.getText();
  96.  
  97.        
  98.  
  99.                 StringTokenizer st=new StringTokenizer(ligne," ,.;: " );
  100.  
  101.                 while(st.hasMoreTokens())
  102.  
  103.                    {if(st.equals("name" ))
  104.  
  105.                    {     mot=st.nextToken();
  106.  
  107.                      if(mot.equals(mot1))
  108.  
  109.                    {  d.setText("" );
  110.  
  111.                    }
  112.  
  113.                    }
  114.  
  115.                    }
  116.  
  117.  
  118.           fin.close();
  119.  
  120.                    }
  121.  
  122.  
  123.         catch(Exception e){}
  124.  
  125.      }
  126.  
  127.  
  128.  
  129. public void actionPerformed(ActionEvent evt)
  130. {
  131.                      if (evt.getSource() == s)
  132.                       System.out.println("hhhhhhhhhhhhhh" );
  133.                        this.setVisible(false);
  134.  
  135.                                 remplir("test" );
  136.                                 Resultat f=new Resultat();
  137.                                 f.setVisible(true);
  138.                          else{ if (evt.getSource() == q)
  139.                             System.out.println("dddddddddddddd" );
  140.  
  141.                                   tester();}
  142.     }
  143.  
  144.  
  145.  
  146.  
  147. void remplir(String nomfich)
  148. {
  149.  
  150.     try
  151.     {
  152.      PrintWriter out = new PrintWriter(new FileWriter("c:/ttt.txt",true));
  153.      out.println("definie host{" );
  154.   out.println(" name" +"      " +d.getText());
  155.  
  156.    out.println("adresse"+"        "+d1.getText());
  157.  
  158.  
  159.          out.println("}" );
  160.    out.close();
  161. }
  162. catch(IOException e)
  163. {
  164.  
  165. }
  166. }
  167.  
  168.  
  169.  
  170. public static void main (String []args)
  171.  
  172.     {
  173.         FormHote c= new FormHote();
  174.         c.setVisible(true);
  175.  
  176.    }
  177.  
  178. }


dsl c un peu long!!

Reply

Marsh Posté le 16-06-2010 à 11:59:15    

   JButton q=new JButton("test" );
    JButton s=new JButton("save" );
 
Tu en recrées de nouveaux alors qu'il faut utiliser les membres de ta classe !!
 
Et puis le nom de tes variables... Tu vas faire tout l'alphabet ?

Reply

Marsh Posté le 16-06-2010 à 12:16:10    

Pas mieux pour les boutons, c'est exactement le problème.
Le second problème étant que je maitiens que la syntaxe est fausse dans la méthode actionPerformed et que je me demande comment ca peut compiler. Il manque visiblement des accolades après "if (evt.getSource() == s) ", du coup le "else" un peu plus loin ne correspond à rien et le compilo devrait raler. Et ce manque d'accolades est aussi ce qui fait que le bouton s "marchait" avant: en fait le "if (evt.getSource() == s)" renvoyait faux, mais comme il ne porte que sur l'instruction suivante (car pas d'accolades), le reste du code est toujours exécuté peu importe la source.

 

Bref ya des trucs à revoir...


Message édité par lasnoufle le 16-06-2010 à 12:24:42

---------------
C'était vraiment très intéressant.
Reply

Marsh Posté le 16-06-2010 à 12:40:53    

merci pour vos reponse,mais dsl j'ai pas pu me corriger!!!
veuillez  m'expliquer

Reply

Marsh Posté le 16-06-2010 à 12:49:56    

Déjà mets des noms de variables explicites ! J'espère que personne ne reprendra ton code car si je reprenais un code comme ça je fous tout à la poubelle. A la place de "q" par exemple mets "boutonTest" ou quelque chose de ce style.
 
Ensuite à la place de :
 
JButton q=new JButton("test" );
JButton s=new JButton("save" );  
 
remplace par :
 
q=new JButton("test" );
s=new JButton("save" );  
 
Et comme l'a dit lasnoufle rajoute les accolades pour le if et le else de l'ActionPerformed.

Reply

Marsh Posté le 16-06-2010 à 13:04:12    

j'ai ajouté les accolades et j'ai changé les nom du bouton et la fonction est devenu:

Code :
  1. public void actionPerformed(ActionEvent evt)
  2. {
  3.                      if (evt.getSource() == boutonsave)
  4.                      { System.out.println("hhhhhhhhhhhhhh" );
  5.                        this.setVisible(false);
  6.  
  7.                                 remplir("test" );
  8.                                 Resultat f=new Resultat();
  9.                                 f.setVisible(true);}
  10.  
  11.                          else{if (evt.getSource() == boutontest)
  12.                               {System.out.println("dddddddddddddd" );
  13.  
  14.                                   tester();}
  15.                                    }
  16.     }


mais lorsque je clique sur la bouton test mon frame se plante !!!!

Reply

Marsh Posté le 16-06-2010 à 13:04:12   

Reply

Marsh Posté le 16-06-2010 à 13:12:43    

Code :
  1. else if (evt.getSource() == boutontest){
  2.          System.out.println("dddddddddddddd" );
  3.          tester();
  4.     }

Reply

Marsh Posté le 16-06-2010 à 13:17:31    

Est-ce que tu vois le "dddddddddddddd" apparaitre dans la console? Si oui c'est probablement ta fonction test() qui plante. Quand tu dis plante, ca serait pas "freeze" plutot? Parce que ca, dans ta fonction de test, c'est une belle boucle infinie (j'me suis permis de changer l'indentation pour que ca soit plus lisible:


while(st.hasMoreTokens()) {
 if(st.equals("name" )) {
  mot=st.nextToken();
  if(mot.equals(mot1)) {
   d.setText("" );
  }
 }
}


Parce que dès que tu tombes sur un st qui n'est pas égal à "name" et qui a au moins un token, la condition de la boucle est vraie mais tu ne fais rien dans la boucle, donc boucle infinie.


---------------
C'était vraiment très intéressant.
Reply

Marsh Posté le 16-06-2010 à 15:01:34    

merci vraiment de m'aider  
j'ai changé ma fonction

Code :
  1. while(st.hasMoreTokens())
  2.               {if(st.equals("host_name" ))
  3.               {     com=st.nextToken();
  4.                 if(com.equals(o))
  5.               { d.setText("le nom existe deja" );
  6.               }
  7.               }
  8.               break;
  9.               }
  10.        }


et"ddddddddd"  je l'ai utilisé pour verifier si la bouton fonctionne ou pas
bon ca va ts va bien mais la fonction teste ne fonctionne pas cad lorsque jai fais taper un nom deja enregistrer dans le fichier j'avais pas le message" d.setText("le nom existe deja" )";dans le textfield

Reply

Marsh Posté le 16-06-2010 à 15:34:27    

Ben écoutes, j'me suis jamais servi du tokenizer mais ca m'a l'air d'un bete parcours de collection, donc ton algo a juste l'air mauvais en fait. T'as pas résolu le problème en mettant le break; ou tu l'as mis, tout ce que tu fais c'est breaker la boucle si le premier token ne vaut pas "host_name".
Après je sais pas exactement ce que tu veux faire donc dur de te dire ce qui va pas, intuitivement je dirais que c'est un truc comme ca qu'il te faut:

while(st.hasMoreTokens()) {
 if(st.equals("host_name" )) {
  com=st.nextToken();
  if(com.equals(o)) {
   d.setText("le nom existe deja" );
   break;
  }
 }
 else {
  com=st.nextToken();
 }
}


Maintenant, sans etre méchant, à ce niveau là c'est les bases de l'algorithmie qu'il faut revoir... Si c'est un truc que tu fais vite fait pour dépanner au boulot et que c'est pas ton métier y'a pas de soucis, par contre si c'est un TP d'étudiant et que tu comptes/dois faire du développement à un moment dans ta future carrière, fais l'effort maintenant, ca te sauvera la vie.


---------------
C'était vraiment très intéressant.
Reply

Marsh Posté le 16-06-2010 à 15:38:00    

Déjà ça : st.equals("host_name" ) ça ne veut rien dire. st est un StringTokenizer et pas un String. Il faut comparer le string que tu récupères avec nextToken().

Reply

Marsh Posté le 16-06-2010 à 15:55:40    

merci pour vous de m'aider mais ca va j'ai bien resoulu mon probleme:
 

Code :
  1. while(st.hasMoreTokens())
  2.               {mot=st.nextToken();//ici ma faute
  3.                   if(mot.equals("host_name" ))
  4.               {     com=st.nextToken();
  5.                      System.out.println(com);
  6.                 if(com.equals(o))
  7.               { d.setText("attention le nom existe deja!!!" );
  8.               d.setForeground(Color.red);
  9.               //System.out.println("le nom existe deja" );
  10.  
  11.               }
  12.  
  13.               }
  14.                  break;
  15.  
  16.               }


Reply

Marsh Posté le 16-06-2010 à 15:58:19    

Ton code peut partir en sucette car tu fais 2 nextToken sans vérifier qu'il y en ait au moins 2.


Message édité par Deamon le 16-06-2010 à 15:59:07
Reply

Sujets relatifs:

Leave a Replay

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