Bonjour,

j'ai créé une JTable à laquelle j'associe à une des colonnes, une classe permettant l'édition de données sous forme de date.

Voici cette classe:
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
private class C_EditionColonneDate extends DefaultCellEditor
{
  private static final long serialVersionUID = 1L;
 
  public C_EditionColonneDate() {
    super( new JFormattedTextField( C_Projet.creeFormatMasque( "##/##/####" )));
  }
 
  public Component getTableCellEditorComponent( JTable jTbl, Object oVal, boolean yaselection, int l, int c ) {
    JFormattedTextField fTxtField = (JFormattedTextField)super.getTableCellEditorComponent( jTbl, oVal, yaselection, l, c );
 
    if( oVal != null )
      fTxtField.setText( oVal.toString());
 
    return fTxtField;
  }
}
C_Projet.creeFormatMasque est une classe servant à créer des objets MaskFormatter.

Le problème rencontré est que lorsque j'entre dans une cellule de type date, rien n'est affiché dans celle-ci, et pourtant, il y a déjà le texte "0 / / ".
Ce qui fait que dès que je tape "1", pour écrire par exemple "17/12/2012", la saisie est déjà "01/ / ". Il faut à chaque fois que je sélectionne l'ensemble pour tout effacer et commencer avec une saisie vierge.

Pourtant, ce MaskFormatter fonctionne très bien lorsque je l'utilise par exemple dans un JTextField. Dans ce cas, le 1er caractère saisi s'incrit bien en 1er caractère du champ "1 / / ".

Existe-t-il une solution à ce problème ?