Bonsoir à tous ,
J'ai une question : Est ce qu'il est possible d'enregistrer un objet (ca c'est possible , je sais ;-)) mais de decider de l'affichage pour cet objet dans la jlist
Merci
Version imprimable
Bonsoir à tous ,
J'ai une question : Est ce qu'il est possible d'enregistrer un objet (ca c'est possible , je sais ;-)) mais de decider de l'affichage pour cet objet dans la jlist
Merci
si tu veux modifier l'affichage des éléments de la JList, il faut utiliser un ListCellRenderer custom et l'enregistrer dans la JList.
en fait,
Ce que je voulais dans la jlist:
c'est que si j'enregistre un objet, on ne vois pas object@ 13456753236996.... mais plutot certaines valeurs de variables membres.
avec le listcellrenderer je n 'ai pas vu de methode le permettant.
j'ai peut-etre neanmoins trouve la solution , il faudrait redefinir la methode toString() de l'objet
le renderer par défaut de JList utilise toString. Un listCellRenderer personnalisé peux afficher tout ce qu'il veux (texte, image, bouton, formes géométrique, ....). C'est le role de sa méthode getListCellRendererComponent
ha oui j ai compris jai cree une classe heritant de jlabel et implementant cellrenderer
j ai du implementer la methode :
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
l objet passe en parametre , je l ai caste et jai pu afficher ce qu il me plaisait.
en fait si j ai bien compris DefaultCellRenderer lui-meme herite de jlabel.
Juste encore une question avant de passer en resolu : Est ce normal que je doive faire un setviewportview de ma jlist a chaque fois que j ajoute un element pour pouvoir le voir?
non. Montre nous ton code d'ajout. Normalement le rafraichissement est automatique.
ce bout de code se trouve dans le constructeur de ma jframe apres le inicomponents()
je develloppe sous netbeans:
au debut je voulais recuper un defaultlistmodel mais sur sun il est ecrit qu'il n'en possaidait pas.
donc voici mon code ou j insere:Code:
1
2
3
4
5
6
7 DefaultListModel dlm = new DefaultListModel(); dlm.addElement(new DVD("independance day")); jList1 = new JList(dlm); jList1.setCellRenderer(new MyCellRenderer()); jScrollPane1.setViewportView(jList1);
ca c'est le code pour créer ta jlist, mais celui que tu utilise pour ajouter par la suite des éléments c'est quoi? Tu recrée une nouvelle JList de toutes pièce?
if (!ok) {
LogFile.getInstance().info("DialAchatComptoir" + " achat de " + pev.getLibelle());
achat.AjouteProduit(pev);
listNomProduit.add(pev.getIdentification() + " " + pev.getLibelle() + " " + pev.getPrixVente() + " €");
jList1 = new JList(listNomProduit);
jScrollPane2.setViewportView(jList1);
}
oui j en cree une de toute piece avec Vector
le mieux est de garder l'ancienne avec un DefaultListModel. Ce modèle possède une méthode add(index, element) qui permet l'ajout
en fait en creeant la jlist en utilisant le modele de liste par defaut, je dois faire un setviewportview() une fois et lorsque j'ajoute par apres un objet dans le modele le rafraichissement se fait automatiquement
merci