J'ai donc essayé d'utiliser l'exemple de Tutorial et de le changer pour qu'il corresponde à mon programme. La méthode getColumnValue renvoie l'objet contenant les informations censées être affichées. Est-ce le chemin à parcourir ou devrait-il plutôt renvoyer la chaîne réelle à afficher. Je suppose que non parce que je mélangerais la présentation avec les données, ce que j'essayais d'éviter.Comment utiliser CellRenderer pour GregorianCalendar?
public class IssueTableFormat implements TableFormat<Appointment> {
public int getColumnCount() {
return 6;
}
public String getColumnName(int column) {
if(column == 0) return "Datum";
else if(column == 1) return "Uhrzeit";
else if(column == 2) return "Nummer";
else if(column == 3) return "Name";
else if(column == 4) return "letzte Aktion";
else if(column == 5) return "Kommentar";
throw new IllegalStateException();
}
public Object getColumnValue(Appointment issue, int column) {
if(column == 0) return issue.getDate();
else if(column == 1) return issue.getDate();
else if(column == 2) return issue.getSample();
else if(column == 3) return issue.getSample();
else if(column == 4) return issue.getHistory();
else if(column == 5) return issue.getComment();
throw new IllegalStateException();
}
}
La colonne 0 et 1 contiennent un objet GregorianCalendar, mais je veux la colonne 0 pour afficher la date et 1 pour afficher le temps. Par conséquent, je sais que l'utilisation de cellRenderers peut aider à résoudre ce problème.
C'est ce que j'ai essayé.
public class DateRenderer extends DefaultTableCellRenderer {
public DateRenderer() { super(); }
public void setValue(Object value) {
GregorianCalendar g =(GregorianCalendar) value;
value=g.get(GregorianCalendar.HOUR);
}
}
Mais la cellule ne montre rien, qu'est-ce qui ne va pas ici?
ok, mais quand j'avais des méthodes pour retourner la valeur réelle qui est censée être affichée, on m'a dit de ne pas mélanger les données et la présentation. – HansDampf