Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1680 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  ajouter un champs de controle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

ajouter un champs de controle

n°2001995
touma10
Posté le 16-06-2010 à 01:05:22  profilanswer
 

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" );

mood
Publicité
Posté le 16-06-2010 à 01:05:22  profilanswer
 

n°2002056
Deamon
Posté le 16-06-2010 à 10:15:14  profilanswer
 

T'as bien ajouté le listener au bouton ?

n°2002071
touma10
Posté le 16-06-2010 à 10:38:22  profilanswer
 

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

n°2002074
lasnoufle
La seule et unique!
Posté le 16-06-2010 à 10:41:50  profilanswer
 

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.
n°2002115
touma10
Posté le 16-06-2010 à 11:57:25  profilanswer
 

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!!

n°2002117
Deamon
Posté le 16-06-2010 à 11:59:15  profilanswer
 

   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 ?

n°2002130
lasnoufle
La seule et unique!
Posté le 16-06-2010 à 12:16:10  profilanswer
 

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.
n°2002142
touma10
Posté le 16-06-2010 à 12:40:53  profilanswer
 

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

n°2002150
Deamon
Posté le 16-06-2010 à 12:49:56  profilanswer
 

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.

n°2002153
touma10
Posté le 16-06-2010 à 13:04:12  profilanswer
 

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 !!!!

mood
Publicité
Posté le 16-06-2010 à 13:04:12  profilanswer
 

n°2002154
Deamon
Posté le 16-06-2010 à 13:12:43  profilanswer
 

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

n°2002158
lasnoufle
La seule et unique!
Posté le 16-06-2010 à 13:17:31  profilanswer
 

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.
n°2002208
touma10
Posté le 16-06-2010 à 15:01:34  profilanswer
 

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

n°2002234
lasnoufle
La seule et unique!
Posté le 16-06-2010 à 15:34:27  profilanswer
 

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.
n°2002240
Deamon
Posté le 16-06-2010 à 15:38:00  profilanswer
 

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().

n°2002258
touma10
Posté le 16-06-2010 à 15:55:40  profilanswer
 

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.               }


n°2002262
Deamon
Posté le 16-06-2010 à 15:58:19  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  ajouter un champs de controle

 

Sujets relatifs
Comment ajouter une balise après X affichage sqlProblème d'affichage dans champs textes dynamiques (POUR UN DECOMPTE)
ajouter du styles css à un lien[RESOLU] mysql_query("UPDATE ce met à jour mais remplace au lieu...
Comment ajouter des infos à un index qui n'existe pas forcément ?Liste déroulante et contrôle via Javascript
Stocker valeur du contrôle CheckboxControle d'un terminal Linux via PHP
Ajouter une liste a une autreVérifier les champs d'un formulaire avec Javacript
Plus de sujets relatifs à : ajouter un champs de controle


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR