Filtrer les données d'un JTable [Résolu]

Messages postés
138
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
6 septembre 2019
- - Dernière réponse : yoanpg
Messages postés
138
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
6 septembre 2019
- 11 juil. 2014 à 07:56
Bonjour à tous, ;)
J'ai un JTable, contenant des données issues d'une base de données SQLite. Mon but est de filtrer les lignes à afficher dans un JTable, en fonction du contenu de plusieurs JLabels.
Malgré plusieurs heures de recherche, je n'y arrive pas.

J'ai trouvé qu'il y a possibilité de faire un modèle. Mais il faut créer une classe MyTableModel etc. Je trouve que c'est sortit l'artillerie lourde pour un petit truc. Sans compter que je n'y suis pas arriver à l'implémenter correctement :(

Sinon j'ai aussi la possibilité de vider mon JTable et refaire une requête SQL pour compléter à nouveau mon JTable. Mais comment on fait pour vider et re-remplir un JTable existant ?

Y a-t-il une autre méthode plus simple ?

Bref, je ne sais pas trop comment m'en sortir. Pouvez-vous m'aider ??
Merci d'avance :)
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
244
1
Merci
Salut,

Je pense que ce n'est pas loin de ce que tu cherches à faire :http://codes-sources.commentcamarche.net/source/54071-filtre-sur-les-colonnes-d-une-jtable

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 193 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
244
1
Merci
C'est mieux comme ca ?

Table tabPatients = new Table(columns, data);
JScrollPane scrollPatients = new JScrollPane(tabPatients);
GridBagConstraints gbc_scrollPatients = new GridBagConstraints();
gbc_scrollPatients.fill = GridBagConstraints.BOTH;
gbc_scrollPatients.gridx = 1;
gbc_scrollPatients.gridy = 1;
getContentPane().add(scrollPatients, gbc_scrollPatients);


Si ce n'est pas le cas, c'est que tu as un soucis dans tes données : tes tables doivent être vides.

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 193 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
138
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
6 septembre 2019
3
0
Merci
En effet ça ressemble pas mal.

Cependant, je n'arrive pas à l'intégrer dans mon programme. J'ai copié les classes Table et Filtre. Dans ma classe déjà existante (étendant une JFrame) je crée un JScrollPane contenu dans une case d'un GridBagLayout, puis je crée mon tableau :

JScrollPane scrollPatients = new JScrollPane();
GridBagConstraints gbc_scrollPatients = new GridBagConstraints();
gbc_scrollPatients.fill = GridBagConstraints.BOTH;
gbc_scrollPatients.gridx = 1;
gbc_scrollPatients.gridy = 1;
getContentPane().add(scrollPatients, gbc_scrollPatients);

Table tabPatients = new Table(columns, data);
scrollPatients.setViewportView(tabPatients);


Mais lorsque je lance mon programme, je n'ai pas de tableau :(
Qu'est ce que j'ai oublié ?
Commenter la réponse de yoanpg
Messages postés
138
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
6 septembre 2019
3
0
Merci
Non ça ne change rien :(

Et j'ai testé le contenu de columns et data, ainsi que le contenu de enregistré dans ma classe Table, et il y a des infos.

Est-ce qu'il ne faut pas faire quelque chose en plus pour faire afficher Table sous forme de JTable ?
Commenter la réponse de yoanpg
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
244
0
Merci
Tu dois avoir un problème avec le JScrollPane dans ce cas, essayes de l'enlever dans un premier temps, tu devrais voir ta table.
Commenter la réponse de cs_Julien39
Messages postés
138
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
6 septembre 2019
3
0
Merci
Bon finalement je m'en suis sorti autrement, en recréant un nouveau JTable à chaque fois que j'appuie sur une touche. J'espère que ce sera assez rapide même quand il y aura beaucoup d'enregistrement.
Merci de ton aide.
Bonne journée
Commenter la réponse de yoanpg