bonjour,
la grosse question est dans le titre.
Après l'affichage de la Jtable, est-il possible de modifier son contenu en le triant selon un critère de colonne ?
(en gardant bien sur la cohérence des lignes)
merci
bonjour,
la grosse question est dans le titre.
Après l'affichage de la Jtable, est-il possible de modifier son contenu en le triant selon un critère de colonne ?
(en gardant bien sur la cohérence des lignes)
merci
Oui et je m'arrache les cheuveux depuis pas mal de temps pour comprendre comment.
Cela concerne ton AbstractTableModel si j'ai bien compris....
Edit : viens voir sur ce topic, ca part pour etre très interessant
Si vous voulez il y a ce lien qui est pas mal mais j'ai pas essaye. Vous me direz si ca marche :
http://www.supinfo-projects.com/en/2.../2/Default.asp
En effet, lorsque c'est expliqué de facon claire dans un francais correct (l'anglais ca va 5 minutes, mais pour comprendre certains pb ....) c'est tout de suite plus facile
Merci beaucoup.
Pendant que tu es la, j'ai un petit probleme en plus avec mes JTable que je n'arrive pas a résoudre.
Les colonnes d'une JTable sont gérées par ColumnModel et ceci est censé permettre de ne pas tenir compte de la position d'une colonne pour retrouver une valeur si j'ai bien compris.
Mais voila mon probleme, soit chez moi cela ne fonctionne pas, soit je n'utilise pas la bonne methode pour retourner une colonne.
J'utilise par exemple le code suivant (je tronque expres) :
La ou je rencontre un probleme est dans le MouseListener que je fais (pour tester que je retourne la bonne valeur).
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 //Initialisation du tableau String[] columnNames = {"Nom du gène" ,"Symbole"}; String[][] list = new String[0][2]; if (interFace.dbQuery.getConnectionState() == true){ list = interFace.dbQuery.getGenesList(); } DefaultTableModel model = new DefaultTableModel(list, columnNames){ private static final long serialVersionUID = 1L; //Rend les lignes et les colonnes non-editable public boolean isCellEditable(int iRowIndex, int iColumnIndex){ return false; } }; geneTable = new JTable(model); geneTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); MouseListener mouseListener = new MouseAdapter() { public void mouseClicked(MouseEvent e) { int selection = geneTable.rowAtPoint(e.getPoint()); geneTable.setRowSelectionInterval(selection, selection); if (e.getButton() == 3){ System.out.println(geneTable.getValueAt(geneTable.getSelectedRow(),((AbstractTableModel)geneTable.getModel()).findColumn("Symbole"))); } } }; geneTable.addMouseListener(mouseListener);
En effet il me semblais avoir compris que la methode findColumn("Symbole") devait me retourné le bon index pour cette colonne, quels que furent leur modifications....
Et ce n'est pas la cas.
Donc voila mes questions :
*peut-on rendre ces colonnes inamovibles (setColumnSelectionAllowed() ne fonctionne pas chez moi)
*est-ce que je me gourre quelque part ? (ce qui est vraissembable)
Navré pour cette problematique un peu longue, mais je ne trouve pas de solution, simple ou non.
En fait j'ai trouvé ma reponse en ecrivant mon message
Je ne pointé tout simplement pas sur le bon tableau.
Il fallait rajouter : geneTable.getModel().getValueAt
Navré pour le derangement
Pas grave. Au moins tu as vu ton erreur.
Oubli passi tu as fini !!
Va voir ce lien qui pointe vers la javadoc de la JTable.
Il y a un exemple de tri.
http://java.sun.com/docs/books/tutor...e.html#sorting
Partager