BONJOUR
comment mettre le resultat d'une requete sql dans un jtable san passé par le tablemodel ?
merci !
BONJOUR
comment mettre le resultat d'une requete sql dans un jtable san passé par le tablemodel ?
merci !
Je ne crois pas que cela soit possible. Les JTable ce n'est que le composant graphique, après pour ajouter des données il y a un model qui est implicitement géré dérrière.
Si tu ne veux pas te casser la tête tu peux toutefois utiliser le model DefaultTableModel si tu n'as pas besoin de fonctions particulières sur ton model. Tu peux utiliser la méthode addRow qui te permet d'ajouter des lignes.
http://java.sun.com/j2se/1.5.0/docs/...ableModel.html
L'utilisation des modèles n'est pas compliqué. Il est assez simple d'étendre AbstractTableModel. Exemple :
Tu peux même envisager un constructeur qui prend ton tableau résultat en entrée, et changer le model de ta JTable pour chaque nouvelle requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 monModel extends AbstractTableModel { // Considérons que le résultats de ta requête soit dans un tableau double entrées : String [][] resRequete = new String [0][0]; public int getRowCount() {return resRequete.length;} public int getColumnCount() {return resRequet[0].length;} public void getValueAt (int row, int col) { return (String) resRequete[row][col];} // Pour mettre à jour les résultats de tes requêtes : public setResultatRequete (String[][] resultat) {resRequete = resultat;} }
maJTable.setModel(new monModel(tableauResultat));
A toi de vérifier qu'un raffraîchissement de l'affichage soit bien effectué après mise à jour.
Mauvaise pratique...Envoyé par marchand de sable
Ce qu'il faut faire c'est changer le modèle de la JTable puis appeler la méthode fireTableDataChanged().
N.B: Je suppose que ton modèle étend DefaultTableModel
Si tu ne comprends toujours pas, n'hésite pas à revenir poser des questions (après avoir bien chercher avant )
Je m'en doutais un peu...Envoyé par afrikha
J'ai du l'utiliser 1 ou 2 fois à causes de problèmes de raffraîchissement que j'arrivais pas à résoudre...
Si la question est pour moi, ben non, en général j'étends bien AbstractTableModel... Pourquoi ? C'est aussi une mauvaise pratique ???N.B: Je suppose que ton modèle étend DefaultTableModel
Non, ça marche aussi pour AbstractTableModel.Envoyé par marchand_de_sable
ouf
N'oulie pas de nous dire si tu t'en sors Malik
J'ai une petite question là dessus moi. Je ne comprends pas la mauvaise pratique ici. Pour changer le modèle il faut bien faire un setModel non ?Envoyé par afrikha
Pourrais tu me donner un exemple de code correct stp ?
Je te remercie.
Dans l'exemple pris, ce n'est pas le modèle qui doit changer, mais les valeurs des données qu'il doit manipuler.Envoyé par dbprog
Pour poursuivre l'exemple de modèle de toute à l'heure :Pour être honnête, je ne sais pas vraiment si après ça il faut appeler le repaint() de la JTable, du conteneur de plus haut niveau (JFrame Applet, etc.), ou s'il ne faut rien faire...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 // l'initialisation de la JTable se fait comme suit : JTable maTable = new JTable(new monModel()); // Méthode de mise à jour des données de la JTable, public void MaJJTable (String [][] resRequete) { // resRequete correspond aux données récupérées par la nouvelle requête, // passées ici en paramètre. monModel model = (monModel) maJTable.getModel(); model.setResultatRequete(resRequete); model.fireTableDataChanged(); // demander le raffraîchissement de l'affichage ??? }
Perso, après ça, je fais tourner l'appli avec ces différentes options pour voir ce qui marche
Non, la méthode fireTableDataChanged() s'en charge : c'est ça raison d'être.je ne sais pas vraiment si après ça il faut appeler le repaint() de la JTable
Et moi qui ne comprenait pas de quoi ils parlaient dans la chansonEnvoyé par afrikha
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager