Filtrer les données d'un JTable

Résolu
yoanpg Messages postés 145 Date d'inscription dimanche 15 février 2009 Statut Membre Dernière intervention 22 février 2021 - 8 juil. 2014 à 08:04
yoanpg Messages postés 145 Date d'inscription dimanche 15 février 2009 Statut Membre Dernière intervention 22 février 2021 - 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 :)

6 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 366
8 juil. 2014 à 10:01
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
1
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 366
9 juil. 2014 à 08:32
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.
1
yoanpg Messages postés 145 Date d'inscription dimanche 15 février 2009 Statut Membre Dernière intervention 22 février 2021 3
Modifié par yoanpg le 8/07/2014 à 13:30
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é ?
0
yoanpg Messages postés 145 Date d'inscription dimanche 15 février 2009 Statut Membre Dernière intervention 22 février 2021 3
9 juil. 2014 à 08:43
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 366
9 juil. 2014 à 09:01
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.
0
yoanpg Messages postés 145 Date d'inscription dimanche 15 février 2009 Statut Membre Dernière intervention 22 février 2021 3
11 juil. 2014 à 07:56
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
0