Ich habe eine Methode createAndPackDatesOverview, in welcher ich Felder von Tagen in einem Kalender farbig hervorheben kann.
private static void createAndPackDatesOverview(String dates, JCalendar jc) {
HighlightEvaluator evaluator = new HighlightEvaluator();
evaluator.add(createDate(14));
jc.getDayChooser().addDateEvaluator(evaluator);
jc.setCalendar(jc.getCalendar());
}
Hier die Methode createDate:
private static Date createDate(int d) {
Calendar c = Calendar.getInstance();
//c.set(Calendar.YEAR, y);
//c.set(Calendar.MONTH, m);
c.set(Calendar.DAY_OF_MONTH, d);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return (c.getTime());
}
Das Problem ist, dass das nur bei Tagen geht. Wenn ich jetzt der Methode createDate drei Werte übergebe, nämlich Jahr (y), Monat (m) und Tag (d) - was muss ich tun, dass ich Tage innerhalb eines definierten Monats innerhalb eines definierten Jahres (also z. B. den 12. 9. 2023) hervorheben kann? Nichts von dem, was ich bisher versucht habe, ist mir bislang gelungen.
Hier mein Evaluator:
class HighlightEvaluator implements IDateEvaluator {
private final List list = new ArrayList<>();public void add(Date date) { list.add(date); } @Override public boolean isSpecial(Date date) { return list.contains(date); } @Override public Color getSpecialForegroundColor() { return Color.red.darker(); } @Override public Color getSpecialBackroundColor() { return Color.blue; } @Override public String getSpecialTooltip() { return "Highlighted event."; } @Override public boolean isInvalid(Date date) { return false; } @Override public Color getInvalidForegroundColor() { return null; } @Override public Color getInvalidBackroundColor() { return null; } @Override public String getInvalidTooltip() { return null; }
}