Forum Clubic

Java 1.6 : JTable - problème de tri

Bonsoir !
J’utilise dans une application une Jtable que j’essaie de trier selon divers critères.
Cette table contient une liste de personnes, que je trie par ville, puis par nom , etc
Le problème c’est que quand j’applique le tri, ca crée un bug dans la table et certaines colonnes semblent décalées par rapport au modèle.
Pour être plus précis, lorsque je rentre une donnée dans certaines collones (la table est éditable), la collone se remplit mais à la mauvaise ligne.

Voici la façon dont je trie la table (avec un bouton Trier) :



        
        monSorter = new TableRowSorter(monModel);
        List<SortKey> sortKeys = new ArrayList<SortKey>();

        SortKey sk1 = new SortKey(5,SortOrder.ASCENDING);
        sortKeys.add(sk1);

        SortKey sk2 = new SortKey(4,SortOrder.ASCENDING);
        sortKeys.add(sk2);

        SortKey sk3 = new SortKey(0,SortOrder.ASCENDING);
        sortKeys.add(sk3);

        monSorter.setSortKeys(sortKeys);

    

J’ai essayé d’appeler la méthode jTable.convertColumnIndexToModel() pour mettre à jour le modèle par rapport à la vue lorsque que le tri est effectué mais ca ne change rien au problème.

De même, si j’utilise les flèches de tri sur la table (qui apparaissent quand on définit un sorter), celà fausse le remplissage des lignes, particuilerement quand le tri est décroissant.

J’espère que j’ai réussi à expliquer mon problème, merci beaucoup pour votre aide.

Loic

personne n’a une petite idée? meme si c’est en utilisant des fonctions plus anciennes que celles que la jTable propose avec java 1.6 je suis preneur!

ce tuto devrait t’aider : http://mbaron.developpez.com/javase/javavisu/ (pdf)

je pense qu’il faudrait utiliser la méthode FireTableDataChanged() depuis ton modele pour mettre a jour ta vue : http://java.sun.com/j2se/1.5.0/docs/api/in…TableModel.html

Merci beaucoup pour le pdf je vais le lire attentivement!
edit : je n’ai rien trouvé concernant mon problème… :frowning:

pour la méthode firetabledatachanged c’est bizarre quand je l’applique apres un tri j’ai un stack overflow sur les lignes de la table … :S

Sinon quand j’écris dans la table je fais comme ca


if(jTable.getEditingRow() != -1 && jTable.getEditingColumn() != -1 ){
            int row = jTable.getEditingRow();
            int column = jTable.getEditingColumn();
            TableColumn editingTableColumn = jTable.getColumnModel().getColumn(column);
            rendezVousModel.setValueAt(row,column,(editingTableColumn.getCellEditor().getCellEditorValue()));
            rendezVousModel.fireTableRowsUpdated(row,row);
        }

ET ce qui est bizarre c’est que j’ai vérifié et le numéro de ligne de la variable row est toujours le bon, donc ca devrait marcher…