Il y a un bug ennuyeux dans les JTables. Quand on met en place un éditeur spécifique pour une case, par exemple un JCombobox (ou plus exactement un DefaultCellEditor auquel on passe un JCombobox), si la case est détruite, l'édition continue quand même. On se retrouve alors avec un éditeur actif placé sur une case qui n'a plus rien à voir.

J'ai trouvé sur le web deux solutions:

Lors de la suppression, stopper explicitement l'édition en cours:

TableCellEditor cellEditor = table.getCellEditor();
if (cellEditor != null)
    cellEditor.stopCellEditing();

Autre solution: demander à Java de changer son comportement:

table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);

Next Post Previous Post