Bonjour,
Ce sujet n'est pas nouveau dans le forum, mais je n'ai pas trouvé la solution... Je vous soumets mon problème en espérant que l'un de vous pourra m'aider.
Mon tableau (PlanningView) s'appuie un modèle (PlanningModel) qui contient les données.
Pour afficher une date, j'ai généré une classe DateRenderer, et associé à mon tableau avec la classe (Date) qu'il affiche (cf classe PlanningView).
Dans mon tableau de données (classe PlanningModel), j'essaie ensuite de rentrer des dates avec (new Date(...)), mais ça ne marche pas.
Par contre, je parviens à afficher des cellules de couleurs.
Il y a quelque chose qui m'échappe...
Merci pour votre aide.
Isako
(ci-dessous le source des classes citées)
*** Classe DateRenderer ****************
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 de la forme : 25/06/98 22:32
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.FRENCH);
String str = df.format(date);
this.setText(str);
Font f = this.getFont();
this.setFont(f.deriveFont(Font.PLAIN));
return this;
}
}
*** Classe PlanningView ****************
//Set up renderer and editor for the Date column.
table.setDefaultRenderer(Date.class,new DateRenderer());
*** Classe PlanningModel ****************
class PlanningModel extends AbstractTableModel{
private boolean DEBUG = false;
String[] columnNames = {
...
};
Object[][] data = {
{"W000", new Date(),new Color(153, 0, 153)},
{"W001", new Date(),new Color(153, 0, 13)},
{"W002", new Date(),new Color(13, 0, 153)}
};
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
public String getColumnName(int col) {
return columnNames[col];
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public boolean isCellEditable(int row, int col) {
//Note that the data/cell address is constant,
//no matter where the cell appears onscreen.
if (col < 1) {
return false;
} else {
return true;
}
}
}
**************************************