Bonjour,

J'ai un JTable. Les opérations de tri et de suppression marchent bien séparement. MAIS si je fais un tri, puis je décide de supprimer un élément (et vice versa) ça ne marche plus , ça fait un ArrayIndexOutOfBoundException...pourtant je croyais avoir mis à jour mon modèle...Je ne sais pas ce qui ne va pas.
Je vous donne ci-après la classe de tri, puis la classe de suppression, et enfin la méthode de mise à jour dans ma Vue.
Merci d'avance pour tout!!!!!!!!

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
public class TrierTableau_v4 extends AbstractAction implements ActionListener {
    private VueTableau_v4 fen;
 
    public TrierTableau_v4(VueTableau_v4 fen,String texte){
        super(texte);
        this.fen = fen;
    }
 
    public void actionPerformed(ActionEvent e) { 
        NgramModel_v4 m = fen.getNgramModel();
        m.sort(1); // on trie la colonne où il y a les occurences
        System.out.println("Vous avez cliqué sur Trier");
        System.out.println("premier élément après tri: "+ m.getValueAt(0, 0));
        //on raffraichit la Jtable
        fen.miseAJour();
    }
}
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
 
public class SupprimerTableau_v4 extends AbstractAction implements ActionListener{
    private VueTableau_v4 fen;
 
    public SupprimerTableau_v4(VueTableau_v4 fen,String texte){
        super(texte);
        this.fen=fen;
    }
 
    public void actionPerformed(ActionEvent e) { 
        NgramModel_v4 m = fen.getNgramModel();
        ArrayList<String> maListe = m.getNgramSelected();
        System.out.println("vous voulez supprimer: "+Outils_v4.contenu(maListe));
        m.supprimer(maListe);
        System.out.println("Vous avez cliqué sur Supprimer");
        // raffraichissement des données dans le modèle
        fen.miseAJour();
    } 
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
    public void miseAJour() {
        // on raffraichit la table
        System.out.println("je mets à jour l'affichage du tableau");
        table.setModel(model_v4);
        if(table.getRowCount()>0){
            TableColumn col = table.getColumnModel().getColumn(2);
            col.setCellEditor(new MyCellEditor_v4());
            col.setCellRenderer(new MyCellRenderer_v4());
            etiquetteTotalN.setText("total Ngrames : " + model_v4.getTotalNgram());
            etiquetteTotalNDist.setText("total Ngrames distincts : "+ model_v4.getTotalNgramDist());
 
        }        
    }