J'ai implémenté un éditeur personnalisé pour les cellules d'un tableau. Ces cellules peuvent contenir des dates qui correspondent en fait à des heures, donc j'ai implémenté l'éditeur suivant:
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
 
public class DateCellEditor extends AbstractCellEditor implements TableCellEditor {
    private JTextField field;
    private DateFormat format;
 
    public DateCellEditor(String format) {
        super();
        this.format = new SimpleDateFormat(format);
    }
 
    public Object getCellEditorValue() {
        try {
            return format.parse(field.getText());
        } catch (ParseException e) {
            LOG.error(e);
            return null;
        }
    }
 
    public Component getTableCellEditorComponent(final JTable table, Object value, boolean b, int row, final int column) {
        field = new JTextField(format.format((Date) value));
        field.selectAll();
        return field;
    }
}
J'espérais que le field.selectAll() permettrait de sélectionner toute l'heure par défaut, pour que l'utilisateur puisse directement commencer à saisir une nouvelle heure. Mais ça ne fonctionne pas. Pour une raison qui m'échappe, quand j'édite une telle cellule, le contenu est désélectionné et je dois faire la sélection à la souris.

Une idée?