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 :
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 :
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 :
tasksTable.setDefaultRenderer(Date.class, new DateRenderer());
Enfin, j'essaie de renseigner mon tableau :
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
Partager