[JTable] Associer un HashMap à un TableModel
Bonjour,
Après un après-midi entier à chercher sur Google, dans la doc de Sun, la FAQ de developpez.com, ... je me résigne à ouvrir un post ici.
Contexte :
Je dispose d'un HashMap contenant des produits. En index, j'ai l'ID du produit, et en valeur l'objet représentant un produit.
J'ai un JTable et j'aimerais qu'il affiche mes objets produit avec deux colonnes : le libellé, et le prix. Pour l'instant j'arrive sans trop de difficultés à le remplir ligne par ligne avec le modèle de ma table (qui extends DefaultTableModel) à l'aide du code suivant.
Code:
1 2 3 4
| Vector row = new Vector();
row.add(produit.libelle);
row.add(produit.prixUnitaire + "");
this.addRow(row); |
Mon problème :
Il peut arriver que je sois amené à supprimer un produit de mon JTable. Pour supprimer un produit, j'ai seulement accès à son ID. Dans la mesure où je n'ai pas cet ID dans mon JTable (j'ai seulement accès aux coordonnées de la case sélectionnée, et rappelez-vous je n'ai que deux colonnes : le libellé et le prix), comment supprimer une ligne produit dont je précise l'ID ?
Ce que j'aimerais :
L'idéal serait d'associer une colonne par attribut de ma classe Produit. Mais pas tous les attributs. Par exemple, je ne veux pas afficher l'ID du produit, ou sa description complète.
Ce qui pourrait être encore mieux, c'est que, dès que mon HashTable contenant mes produits change, ce soit automatiquement répercuté sur le JTable.
J'ai cru comprendre (sur http://java.sun.com/docs/books/tutor...able.html#data) qu'il est possible de faire ça avec le concept MVC en créant une classe qui implémente l'interface TableModel, ou qui hérite l'une de ses sous-classes, mais je ne comprends pas comment faire.
Merci d'avance pour votre aide !