Bonjour,
- mon interface graphique Swing comprend une JTable dans un scrollPane.
- J'ai cree une classe MonModel qui etend AbstractTableModel.
ce model est en charge de synchroniser les donnees avec la JTable via
une methode update
qui genere un evenement pour signaler les changements.
- Les changements sont
- update des donnees
- modification du nombre de lignes
- Les donnees sont contenus dans un Vecteur de Vecteur dans mon model.
Celui-ci est
correctement mis a jour lors des update.
-Mon probleme est Lorsque je genere un event, les donnees sont ajoutes a
la fin de la table et non pas
par dessus les donnees existantes.
-J'ai essaye les types d'evenements suivants seuls ou combines mais rien
n'y fait:
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Christophe M
Olivier Savoie wrote:
Bonjour, - mon interface graphique Swing comprend une JTable dans un scrollPane.
- J'ai cree une classe MonModel qui etend AbstractTableModel. ce model est en charge de synchroniser les donnees avec la JTable via une methode update qui genere un evenement pour signaler les changements.
- Les changements sont - update des donnees - modification du nombre de lignes
- Les donnees sont contenus dans un Vecteur de Vecteur dans mon model. Celui-ci est correctement mis a jour lors des update.
-Mon probleme est Lorsque je genere un event, les donnees sont ajoutes a la fin de la table et non pas par dessus les donnees existantes.
-J'ai essaye les types d'evenements suivants seuls ou combines mais rien n'y fait:
-Quelqu'un a-t-il une idee pour me depanner ? merci.
Olivier
Alors, si la structure (entendre ici les colonnes) ne change pas, et qu'il y a juste plus ou moins de ligne dans ta table, ton modèle doit juste faire un fireTableDataChanged(); ce qui doit normalement rafraichir "automatiquement" la table.
Et si ça marche pas, c'est que tu as peut-être un problème dans le "remplissage" de ton modèle...
Olivier Savoie wrote:
Bonjour,
- mon interface graphique Swing comprend une JTable dans un scrollPane.
- J'ai cree une classe MonModel qui etend AbstractTableModel.
ce model est en charge de synchroniser les donnees avec la JTable via
une methode update
qui genere un evenement pour signaler les changements.
- Les changements sont
- update des donnees
- modification du nombre de lignes
- Les donnees sont contenus dans un Vecteur de Vecteur dans mon model.
Celui-ci est
correctement mis a jour lors des update.
-Mon probleme est Lorsque je genere un event, les donnees sont ajoutes a
la fin de la table et non pas
par dessus les donnees existantes.
-J'ai essaye les types d'evenements suivants seuls ou combines mais rien
n'y fait:
-Quelqu'un a-t-il une idee pour me depanner ? merci.
Olivier
Alors, si la structure (entendre ici les colonnes) ne change pas, et
qu'il y a juste plus ou moins de ligne dans ta table, ton modèle doit
juste faire un fireTableDataChanged(); ce qui doit normalement
rafraichir "automatiquement" la table.
Et si ça marche pas, c'est que tu as peut-être un problème dans le
"remplissage" de ton modèle...
Bonjour, - mon interface graphique Swing comprend une JTable dans un scrollPane.
- J'ai cree une classe MonModel qui etend AbstractTableModel. ce model est en charge de synchroniser les donnees avec la JTable via une methode update qui genere un evenement pour signaler les changements.
- Les changements sont - update des donnees - modification du nombre de lignes
- Les donnees sont contenus dans un Vecteur de Vecteur dans mon model. Celui-ci est correctement mis a jour lors des update.
-Mon probleme est Lorsque je genere un event, les donnees sont ajoutes a la fin de la table et non pas par dessus les donnees existantes.
-J'ai essaye les types d'evenements suivants seuls ou combines mais rien n'y fait:
-Quelqu'un a-t-il une idee pour me depanner ? merci.
Olivier
Alors, si la structure (entendre ici les colonnes) ne change pas, et qu'il y a juste plus ou moins de ligne dans ta table, ton modèle doit juste faire un fireTableDataChanged(); ce qui doit normalement rafraichir "automatiquement" la table.
Et si ça marche pas, c'est que tu as peut-être un problème dans le "remplissage" de ton modèle...
Jc Sirot
Olivier Savoie wrote:
Bonjour, - mon interface graphique Swing comprend une JTable dans un scrollPane.
- J'ai cree une classe MonModel qui etend AbstractTableModel. ce model est en charge de synchroniser les donnees avec la JTable via une methode update qui genere un evenement pour signaler les changements.
- Les changements sont - update des donnees - modification du nombre de lignes
- Les donnees sont contenus dans un Vecteur de Vecteur dans mon model. Celui-ci est correctement mis a jour lors des update.
-Mon probleme est Lorsque je genere un event, les donnees sont ajoutes a la fin de la table et non pas par dessus les donnees existantes.
La façon dont les éléments sont affichés dans une JTable (par exe mple l'ordre de ces éléments) dépend de la méthode getValueAt de l'int erface TableModel. Si tu veux que les nouvelles valeurs apparaissent en premier dans la table, il faut que getValueAt renvoie ces valeurs pour les index des premières lignes de la table.
Par exemple :
class MonModel extends AbstractTableModel { Vector data;
public void insert(Vector newValue) { /* on insère la nouvelle valeur en 1ere position * dans la table pour que cette valeur soit utilisée * quand getValueAt récupère les objets sur la ligne 0 */ data.add(0, newValue); update(); // lance les evts pour forcer le rafraichissement }
public Object getValueAt(int row, int col) { return ((Vector)data.get(row)).get(col); } } --
Cordialement -- JC Sirot
Olivier Savoie wrote:
Bonjour,
- mon interface graphique Swing comprend une JTable dans un scrollPane.
- J'ai cree une classe MonModel qui etend AbstractTableModel.
ce model est en charge de synchroniser les donnees avec la JTable via
une methode update
qui genere un evenement pour signaler les changements.
- Les changements sont
- update des donnees
- modification du nombre de lignes
- Les donnees sont contenus dans un Vecteur de Vecteur dans mon model.
Celui-ci est
correctement mis a jour lors des update.
-Mon probleme est Lorsque je genere un event, les donnees sont ajoutes a
la fin de la table et non pas
par dessus les donnees existantes.
La façon dont les éléments sont affichés dans une JTable (par exe mple
l'ordre de ces éléments) dépend de la méthode getValueAt de l'int erface
TableModel. Si tu veux que les nouvelles valeurs apparaissent en premier
dans la table, il faut que getValueAt renvoie ces valeurs pour les index
des premières lignes de la table.
Par exemple :
class MonModel extends AbstractTableModel
{
Vector data;
public void insert(Vector newValue)
{
/* on insère la nouvelle valeur en 1ere position
* dans la table pour que cette valeur soit utilisée
* quand getValueAt récupère les objets sur la ligne 0
*/
data.add(0, newValue);
update(); // lance les evts pour forcer le rafraichissement
}
public Object getValueAt(int row, int col)
{
return ((Vector)data.get(row)).get(col);
}
}
--
Bonjour, - mon interface graphique Swing comprend une JTable dans un scrollPane.
- J'ai cree une classe MonModel qui etend AbstractTableModel. ce model est en charge de synchroniser les donnees avec la JTable via une methode update qui genere un evenement pour signaler les changements.
- Les changements sont - update des donnees - modification du nombre de lignes
- Les donnees sont contenus dans un Vecteur de Vecteur dans mon model. Celui-ci est correctement mis a jour lors des update.
-Mon probleme est Lorsque je genere un event, les donnees sont ajoutes a la fin de la table et non pas par dessus les donnees existantes.
La façon dont les éléments sont affichés dans une JTable (par exe mple l'ordre de ces éléments) dépend de la méthode getValueAt de l'int erface TableModel. Si tu veux que les nouvelles valeurs apparaissent en premier dans la table, il faut que getValueAt renvoie ces valeurs pour les index des premières lignes de la table.
Par exemple :
class MonModel extends AbstractTableModel { Vector data;
public void insert(Vector newValue) { /* on insère la nouvelle valeur en 1ere position * dans la table pour que cette valeur soit utilisée * quand getValueAt récupère les objets sur la ligne 0 */ data.add(0, newValue); update(); // lance les evts pour forcer le rafraichissement }
public Object getValueAt(int row, int col) { return ((Vector)data.get(row)).get(col); } } --