bonjour, je suis en stage et je dois développer une application qui permet de saisir des informations(mise dans un tableau), puis de les enregistrées dans un fichier csv.
Le problème est le suivant lorsque je valide la création d'un objet, il me le crée et lorsque je re valide il me le crée une deuxième fois alors qu'il y a une fonction qui doit vérifier si cela n'existe pas déjà (compare deux champs du tableau avec les valeurs selectionnés dans deux combos box)
voici mon code
la classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class Cfiche { public String categorie,souscategorie, txtprincipal,liensprincipaux,txtsecondaire,lienssecondaires; public Cfiche(){} public Cfiche(String cat,String souscat,String txtp,String lp, String txts, String ls){ categorie = cat; souscategorie = souscat; txtprincipal =txtp; liensprincipaux = lp;//composer de different liens concatener separé par des : txtsecondaire = txts; lienssecondaires = ls;//composer de different liens concatener separé par des : } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 public class Fenetre extends javax.swing.JFrame { PrintWriter sortie; BufferedReader entree; Cfiche[] tabfiche = new Cfiche[40]; String fichier = "basededonnees.csv"; //nom du fichier généré String chemin_pdf; File pdf; int idx=-1; //index du tableau File f = new File(fichier); public Fenetre() throws IOException { setTitle("Mise à jour des informations"); initComponents(); //idx = -1; chemin_pdf = new File(getClass().getProtectionDomain().getCodeSource().getLocation().toString().substring(6)).toString(); chemin_pdf = chemin_pdf + "\\PDF";//definit le chemin du dossier des pdf pdf = new File(chemin_pdf); if ( f.exists() ){ //test l'existance d'un fichier de données lire(); } else{ idx = 0; } affichage(); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 public void lire() throws FileNotFoundException, IOException{ String ligne;// une ligne du fichier lu recuperer par le buffer String[] decoupe; // tableau contenant les parties de la ligne lu entree = new BufferedReader (new FileReader(fichier)); do{ Cfiche elt = null; ligne = entree.readLine();// lit une ligne du fichier if(ligne != null){ decoupe = ligne.split(";");//decoupe chaque cellule du fichier elt = new Cfiche(decoupe[0],decoupe[1],decoupe[2],decoupe[3],decoupe[4],decoupe[5]); idx= idx + 1; tabfiche[idx] = elt; } } while(ligne != null); entree.close(); } public void ecrire(String texte){ try { FileWriter fw = new FileWriter(fichier, true); // le BufferedWriter output auquel on donne comme argument le FileWriter fw cree juste au dessus BufferedWriter output = new BufferedWriter(fw); //on marque dans le fichier ou plutot dans le BufferedWriter qui sert comme un tampon(stream) output.write(texte+"\r\n"); //on peut utiliser plusieurs fois methode write output.flush(); //ensuite flush envoie dans le fichier, ne pas oublier cette methode pour le BufferedWriter output.close(); //et on le ferme System.out.println("ligne créé"); } catch(IOException ioe){ System.out.print("Erreur : "); ioe.printStackTrace(); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 private void creationfiche(){ String [] liensp,lienss; String llistep= " ", llistes=" "; Cfiche elt; int i = index(); if(i == -1){ DefaultListModel p = new DefaultListModel(); listelienp.setModel(p); if(p.isEmpty()==false){ liensp = (String[]) listelienp.getSelectedValues(); llistep = concatenationliste(liensp); } DefaultListModel s = new DefaultListModel(); listeliens.setModel(s); if(s.isEmpty()==false){ lienss = (String[]) listeliens.getSelectedValues(); llistes = concatenationliste(lienss); } elt = new Cfiche(combocategorie.getSelectedItem().toString(),combosouscategorie.getSelectedItem().toString(),txtaprincipal.getText(),llistep,txtasecondaire.getText(),llistes); idx = idx + 1; tabfiche[idx] = elt; System.out.println("creation de la fiche en index : "+idx); System.out.println(tabfiche[idx].categorie + " " +tabfiche[idx].souscategorie); }else{ System.out.println("fiche déjà existante à l'index : " +i); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 private void btvaliderActionPerformed(java.awt.event.ActionEvent evt) { int i; String [] liensp,lienss; i = index(); if(i == -1){ creationfiche(); }else{ DefaultListModel p = new DefaultListModel(); listelienp.setModel(p); System.out.println(p.isEmpty()); if(p.isEmpty()){ tabfiche[i].liensprincipaux =" "; }else{ liensp = (String[]) listelienp.getSelectedValues(); tabfiche[i].liensprincipaux = concatenationliste(liensp); } DefaultListModel s = new DefaultListModel(); listelienp.setModel(s); if(s.isEmpty()== false){ lienss = (String[]) listeliens.getSelectedValues(); tabfiche[i].lienssecondaires = concatenationliste(lienss); }else{ tabfiche[i].lienssecondaires = " "; } } affichage(); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 private void affichage(){ int i; i= index(); System.out.print("Index affiché : "+ i); if(i != -1){ txtaprincipal.setText( tabfiche[i].txtprincipal); txtasecondaire.setText( tabfiche[i].txtsecondaire); listelienp.setListData(traitementliste(tabfiche[i].liensprincipaux)); listeliens.setListData(traitementliste(tabfiche[i].lienssecondaires)); } else{ txtaprincipal.setText(" "); txtasecondaire.setText(" "); DefaultListModel p = new DefaultListModel(); listelienp.setModel(p); p.removeAllElements(); listelienp.removeAll(); DefaultListModel s = new DefaultListModel(); listeliens.setModel(s); s.removeAllElements(); listeliens.removeAll(); } i++; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 int index(){ int i=0, res=-1; boolean test = false; while(i < (idx) && test == false && tabfiche[i] != null){ if(tabfiche[i].categorie.equals(combocategorie.getSelectedItem().toString()) && tabfiche[i].souscategorie.equals(combosouscategorie.getSelectedItem().toString()) ){ System.out.println(tabfiche[i].categorie+" "+combocategorie.getSelectedItem().toString()+"test"); System.out.println(tabfiche[i].souscategorie+" "+combosouscategorie.getSelectedItem().toString()); test = true; res= i; } i++; } return res; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 String concatenationliste(String[] liste){ int i; String listeconc; listeconc= liste[0]; i = 0; while(liste[i] != null){ listeconc = listeconc+":" + liste[i]; i++; } return listeconc; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 String[] traitementliste(String chaine_lien){ String[] listelien; listelien = chaine_lien.split(":"); return listelien; }merci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 private void menusauvegarderActionPerformed(java.awt.event.ActionEvent evt) { f.delete(); try { System.out.println("Le Fichier existe t-il ? "+f.exists()); f.createNewFile(); } catch (IOException ex) { Logger.getLogger(Fenetre.class.getName()).log(Level.SEVERE, null, ex); } int i=0; ecrire("categorie;sous categorie;infos principales;liens principaux;infos secondaires;liens secondaires"); while(tabfiche[i] != null){ String ligne; ligne = tabfiche[i].categorie+";"; ligne = ligne + tabfiche[i].souscategorie+";"; ligne = ligne + tabfiche[i].txtprincipal +";"; ligne = ligne + tabfiche[i].liensprincipaux +";"; ligne = ligne + tabfiche[i].txtsecondaire +";"; ligne = ligne + tabfiche[i].lienssecondaires+";"; System.out.println(ligne); ecrire(ligne); i++; } }
Partager