Bonjour
Voila mon souci; j'ai un programme qui sert à récupérer des fichiers XML correspondants à des mairies de villes. Ces fichiers contiennent pleins d'infos sur les mairies mais on ne se contente que du nom, du code insee, du code postal, du téléphone, de l'email et du site internet.
Dans une interface graphique je dois afficher un annuaire complet (je l'ai fait grâce à une collection) et pouvoir rechercher une mairie par nom.
Le soucis c'est que je n'arrive pas à prendre en compte la collection que j'ai créé pour l'annuaire afin de faire la recherche. A chaque fois que je fais une recherche (via un champ de saisie puis un clique sur un bouton "search"), pleins d'erreurs s'affichent dans la console.
Voici quelques bouts de code:
Dans la classe Collection (qui ajoute les villes à une collection et qui gère la recherche):
Une partie de la classe de l'interface graphique (le bouton4, c'est le bouton "search")
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 public CollecVille () { } private ArrayList<Ville> vil = new ArrayList<Ville>(); public void add(Ville commune) { if (!vil.contains(commune)) { //si la collection ne contient pas la commune vil.add(commune); //alors ajouter la commune à la collection } } public String searchNom(String name) throws NoSuchElementException{ Iterator<Ville> iterator = vil.iterator(); System.out.println("****************"); while (iterator.hasNext()) { Ville commune = iterator.next(); if (commune.getNom().contains(name)) { return commune.toString(); } } throw new NoSuchElementException("Aucune ville dont le nom contient <<" + name + ">> n'a été trouvée"); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part private CollecVille inter = new CollecVille();Le Main dans lequel on créé la collection
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 //Bouton Search par nom try { bouton4.addActionListener( new ActionListener () { public void actionPerformed (ActionEvent e) { JFrame fnom = new JFrame("Recherche par nom"); fnom.setBounds(0, 210, 465, 600); JTextArea textArea = new JTextArea(inter.searchNom(nameField.getText())); System.out.println("Nom = " + inter.searchNom(nameField.getText())); textArea.setBackground(new Color(253,191,183)); textArea.setEditable(false); fnom.add(textArea); fnom.setContentPane(new JScrollPane(textArea)); fnom.setVisible(true); } } );
Code : Sélectionner tout - Visualiser dans une fenêtre à part CollecVille inter = new CollecVille();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 v = new Ville(nom,codeInsee,codePostal,telephone,email, url); inter.add(v);
Les messages d'erreur:
Exception in thread "AWT-EventQueue-0" java.util.NoSuchElementException: Aucune ville dont le nom contient <<Recherche par nom>> n'a été trouvée
at collection.CollecVille.searchNom(CollecVille.java:35)
at collection.AnnuGUI$4.actionPerformed(AnnuGUI.java:131)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Partager