Bonjour,

Je travaille actuellement sur un JXTable et j'aurais besoin de mettre à jour le model que j'ai redefini (et qui extends AbstractTableModel) lorsque l'on change une colonne.

Dans mon model, j'ai une méthode moveColumn() qui s'occupe d'intervertir 2 column (entete et contenu).
Cette méthode est appellé depuis un écouteur "TableColumnModelListener" en surchargeant la méthode public void columnMoved(TableColumnModelEvent e);

Ma méthode moveColumn est la suivante :
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
public void moveColumn(final int fromIndex, final int toIndex) {
		// cas d'index negatif, on ne fait pas de traitement
		if(fromIndex < 0 || toIndex < 0)
			return ;
 
		// si fromIndex = toIndex, on ne fait pas de traitement
		if(fromIndex == toIndex)
			return ;
 
		// l'entete et les data ne doivent pas etre null
		if(enteteColonnes == null || data == null)
			return ;
 
		// les conditions sont remplis, on fait le switch dans les entetes et dans les données
		String enteteTmp = enteteColonnes.get(toIndex);
		enteteColonnes.set(toIndex, enteteColonnes.get(fromIndex));
		enteteColonnes.set(fromIndex, enteteTmp);
 
		// pour chaque ligne on doit changer la colonne car data.get(i) renvoit la ligne et data.get(i).get(j) donna la valeur de la colonne
		String cellTmp;
		for(int i = 0 ; i < data.size() ; i++){
			cellTmp = data.get(i).get(toIndex);
 
			//setValueAt(data.get(i).get(fromIndex), i, toIndex);
			//setValueAt(cellTmp, i, fromIndex);
			data.get(i).set(toIndex, data.get(i).get(fromIndex));
			data.get(i).set(fromIndex, cellTmp);
		}
		//fireTableStructureChanged();
	}
Lorsque j'active la ligne //fireTableStructureChanged();, la modification sur mon JXTable est correcte mais je n'ai plus la colonne en selection pour continuer le déplacement de celle-ci via la souris (je suis obliger de la reselectionner et de refaire la manipulation : deplacement colonne par colonne).

Sans cette ligne et c'est mon problème, le model semble correctement mis à jour mais la vue de mon JTable est erroné (dans la colonne qu'on deplace il prend une valeur voisine).

Par contre pour le changement de colonnes au niveau du titre aucun problème c'est bien correct dans le model et a l'affichage seul l'action sur les data pose soucis...


Avez-vous une idée pour résoudre mon problème ?
Merci d'avance,