Programmer une fonction recherche avec une ArrayList

Programmer une fonction recherche avec une ArrayList - Java - Programmation

Marsh Posté le 05-12-2009 à 18:20:31    

Bonjour à tous,
 
Je suis en train de programmer une fonction recherche et je rencontre quelques problèmes. En fait j'ai créé un objet appelé produit qui est constitué de plusieurs paramètres.
Voici le code correspondant :
<code>
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
 
 
public class fonction_recherche extends JFrame
 
{  
 private JPanel panneau = new JPanel();
 
 private produit Cuteur=new produit("Cuteur",23,"fixage","ZX23","1" );
 private produit Vis=new produit("Vis",23,"fixage","ZX23","1" );
 
 private DefaultListModel dlm = new DefaultListModel();
 
 private JList liste_resultat = new JList(dlm);
 private JButton search = new JButton("search" );
 private JTextField textF=new JTextField("...",10);
 private ArrayList<produit> stock = new ArrayList<produit>();
 
 
 public fonction_recherche()
 {
     super("Ebauche de programme" );
     setBounds(100, 200, 800, 150);
     setDefaultCloseOperation(EXIT_ON_CLOSE);
     panneau.add(textF);
     panneau.add(search);
     panneau.add(liste_resultat);
     setContentPane(panneau);
     setVisible(true);
     panneau.setBackground(Color.black);
     
     stock.add(Cuteur);
     stock.add(Vis);
       
     liste_resultat.setLayoutOrientation(JList.HORIZONTAL_WRAP);
     liste_resultat.setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
     
     
     search.addActionListener(new ActionListener()
     {
     public void actionPerformed(ActionEvent evenement)
      {  
      String texte_entre=textF.getText();
      for(produit p : stock)
       {
       if(texte_entre.equals(p.getNom()))
        {
        dlm.addElement(p);
        }                
       }
      liste_resultat = new JList(dlm);
   panneau.repaint();  
      }          
     });    
 }  
}
</code>
 
La classe produit :
<code>
public class produit
{
  private String nom;
  private int qte;
  private String ref;
  private String categorie;
  private String zone;
 
  public produit(String x,int a,String b,String c,String d)
  {
    nom=x; qte=a; categorie=b; ref=c; zone=d;
  }
 
   
  public String getNom()
  {
   return nom;
  }
  public int getQte()
  {
   return qte;
  }
  public String getRef()
  {
   return ref;
  }
  public String getCat()
  {
   return categorie;
  }
  public String getZone()
  {
   return zone;
  }
}
</code>
 
La classe d'éxécution :
<code>
public class testfonction_recherche
{
 public static void main(String[] args)  
 {  
 fonction_recherche a = new fonction_recherche();
 }
}
</code>
 
Le but de mon programme principal c'est de faire une recherche dans une ArrayList qui contient une liste de ce genre de produits à partir d'une comparaison chaine de caractère entrée dans un JTextField. Et ce pour pouvoir ensuite copier les lignes de l'ArrayList correspondant aux résultats de la recherche dans une JList.
 
Le problème c'est qu'il affiche bien les objets trouvés lors de la recherche mais avec un code plutôt bizarre (un truc du genre : produit@16f8cd0) au lieu de m'afficher les paramètres de mon objet comme je le voudrais (c'est à dire : le nom, la catégorie, la zone, la quantité, etc).
Sauriez vous de quoi cela peut venir ? Merci d'avance

Reply

Marsh Posté le 05-12-2009 à 18:20:31   

Reply

Marsh Posté le 05-12-2009 à 19:40:35    

- Balises codes stp (avec des crochets [], pas des <> )
 
- Ta question concerne une List, inutile d'ajouter du code lié à Swing. Ca facilitera la lecture des intervenants et augmentera tes chances d'obtenir une réponse. De plus, ça mettra en évidence les confusions dans ton esprit et dans la conception de ton programme.
=> Ta fonction de recherche ne devrait rien faire intervenir qui soit lié à ton interface graphique.
 
- public produit(String x,int a,String b,String c,String d)
C'est mal d'utiliser a, b, c, d.
 
- public class testfonction_recherche  
Double non respect des conventions de nommage.
 
- À part ça, la réponse à ta question : écrire un toString().


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Sujets relatifs:

Leave a Replay

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