Bonjour,

J'ai actuellement des lags lorsque je rafraichit ma JTable et je ne trouve pas de solutions à ce problème.

Contexte: J'ai une JTable de 12 colonnes et 10 lignes. Je souhaite updater certaines de ces lignes sur des évènements extérieurs. Donc pour ce faire j'appelle à partir de mon TableModel (et dans le thread graphique via SwingUtilities.invokeLater) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
log.debug("fireTableRowsUpdated("+row+")");
fireTableRowsUpdated(row, row);
Tout se passe bien et la JTable se met correctement à jour. L'inconvénient c'est que de temps en temps je reçoit beaucoup de notifications (environ 1000 à la seconde pendant une dizaine de minutes). C'est à ce moment que mon appli commence à lagger. La souris se déplace correctement à l'écran mais lorsque je clic sur une ligne il lui faut une seconde pour sélectionner la ligne (et beaucoup plus de temps au bout de 5 minutes).

Ma première solution a été de remplacer le fireTableRowsUpdated par des fireTableCellUpdated car je n'ai pas toujours besoin d'updater les 12 colonnes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
log.debug("fireTableRowsUpdated("+row+")");
fireTableCellUpdated(row, 7);
fireTableCellUpdated(row, 8);
fireTableCellUpdated(row, 9);
fireTableCellUpdated(row, 11);
Cette solution m'a l'air d'améliorer légèrement la situation mais ce n'est pas suffisant car le lag est toujours visible.

Personnellement, c'est la première fois que j'ai besoin de rafraichir aussi souvent une JTable donc je ne sais pas vraiment comment faire ni même si une JTable peut supporter autant (1000 events par seconde).

Avez-vous des solutions, idées ou piste à creuser?