Programmer une fonction recherche avec une ArrayList

ZiggyStardust74 Messages postés 8 Date d'inscription dimanche 29 novembre 2009 Statut Membre Dernière intervention 7 décembre 2009 - 5 déc. 2009 à 18:18
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 5 déc. 2009 à 18:54
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 :
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 stock = new ArrayList();


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();		
    		}		  		  		
    	});    
}	
}


La classe produit :
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;
  }
}


La classe d'éxécution :
public class testfonction_recherche
{
public static void main(String[] args) 
{	
fonction_recherche a = new fonction_recherche();
}
}


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

3 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
5 déc. 2009 à 18:41
Salut,

Problème archi classique : c'est à toi de redéfinir la fonction toString afin de formater le texte à afficher...
______________________________________
DarK Sidious
0
ZiggyStardust74 Messages postés 8 Date d'inscription dimanche 29 novembre 2009 Statut Membre Dernière intervention 7 décembre 2009
5 déc. 2009 à 18:51
Je ne comprends pas trop, je n'utilise pas la fonction toString alors pourquoi devoir la redéfinir ?
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
5 déc. 2009 à 18:54
Salut,

Car c'est elle qui est utilisée dès que tu fait un printLn d'un objet, que tu veux l'afficher dans une JTable, etc.

Du coup, dans ta classe Produit :
public String toString() {
    return "Produit: nom=" + getNom() + "...";
}

______________________________________
DarK Sidious
0
Rejoignez-nous