Bonjour,

Je souhaite afficher une date dans un tableau et j'ai quelques difficultés.
Je vous montre mon code. Si quelqu'un veut bien me donner un petit coup de main ...

Mon tableau s'appuie sur un modèle de données qui hérite de la classe AbstractTableModel. Je souhaite afficher une date dans la 11ème colonne. J'ai défini la méthode getColumnClass() comme suit :

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 []colClass = new Class[]{
    			Integer.class, 		
			Double.class,
			Double.class,
			Double.class,
			Double.class, 
			Double.class,
			Double.class,
			Double.class,
			Double.class,
			Double.class,
			Date.class
    	};
 
  public Class getColumnClass(int c) {
  	return colClass[c];
  }
J'ai créé une classe DateRenderer :

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
public class DateRenderer extends DefaultTableCellRenderer implements TableCellRenderer {
 
	public Component getTableCellRendererComponent(JTable table, Object
			value, boolean isSelected,  boolean hasFocus,  int row,   int column) {
 
			Date date = (Date) value;
 
	      		// Affichage : 25/06/98
	      		DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.FRENCH);
	      		String str = df.format(date);
 
	      		this.setText(str);
	      		Font f = this.getFont();
	      		this.setFont(f.deriveFont(Font.PLAIN));
	      	return this;
	    }
 
}

... et j'ai associé ce renderer à mon tableau :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
tasksTable.setDefaultRenderer(Date.class, new DateRenderer());
Enfin, j'essaie de renseigner mon tableau :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
tasksTable.getModel().setValueAt(new GregorianCalendar(2005, Calendar.APRIL, 20),0,10);
Au final, j'ai une erreur :
java.lang.IllegalArgumentException: Cannot format given Object as a Date
at java.text.DateFormat.format(Unknown Source)
at java.text.Format.format(Unknown Source)
at application.editor.DateRenderer.getTableCellRendererComponent(Unknown Source)
L'un de vous peut-il m'aider ?

Il y a des aspects que je n'ai pas bien compris :
- quand utilise-t-on les méthodes setCellRenderer() et setDefaultRenderer()
- l'utilisation des classe GregorianCalendar, Calendar et Date est aussi assez floue.

Merci d'avance.

Isak