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):


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");
 
    }
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
private CollecVille inter = new CollecVille();
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);
                }
            }
        );
Le Main dans lequel on créé la collection


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)