[JTable] insérer des données...
Bonjour,
Je crois avoir compris qu'en SWING, les différents composants travaillent selon des modèles. J'ai donc créer un modèles pour l'application que je suis en train de réaliser pour mon tableau.
Dans tous les exemples que j'ai trouvé, les données sont passées au tableau avant que celui-ci ne soit construit. J'ai aussi trouver des docs pour modifier une valeur directement dans le tableau.
Imaginons que je reçoive les informations que je veux afficher dans mon tableau au compte goutte... Comment faire pour ajouter ces données au modèle et qu'il les affiche???
Merci d'avance...
Re: [SWING] JTABLE --> insérer des données...
Salut,
Attention : setValue() sert à modifier une cellule mais pas à en créer...
Citation:
Envoyé par gondek
Imaginons que je reçoive les informations que je veux afficher dans mon tableau au compte goutte... Comment faire pour ajouter ces données au modèle et qu'il les affiche???
Il faut écrire ton propre TableModel de manière à ce qu'il utilise une List pour stocker les différents éléments. Chaque élément de la liste correspond à une ligne de ta JTable, et les propriétés de l'objet correspondent aux différentes colonnes...
Il suffit ensuite de créer dans ce modèle une méthode add() qui te permet d'ajouter des éléments dans la liste tout en renseignant les différents listener (important pour que la JTable soit actualisé) :
Code:
1 2 3 4 5
| public void add (MyObject row) {
this.list.add(row);
int index = this.list.size() - 1;
fireTableRowsInserted(index, index);
} |
La méthode fireTableRowsInserted() hérité d'AbstractTableModel renvoit l'événement à tous les objet enregistré. (si tu ne souhaites pas hérité d'AbstractTableModel il te suffit de créer ces méthodes... ce n'est pas bien compliqué et au pire tu regardes le code source ;))
Bien sûr il faut que toutes les autres méthodes de TableModel prennent en compte cette List...
a++
PS : gondek, tu as dû désactiver le BBCode dans ton profil...