Kalenderfelder des com.toedter.calendar.JCalendar markieren.

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;
}

}

1 „Gefällt mir“

Das ist eine spezielle Library, wo sich jeder, der sie nicht kennt, erstmal einen Haufen Informationen zusammensuchen müßte. Wenn du ein compilierbares Beispiel postest, wird sicher schnell(er) eine Lösung gefunden.

1 „Gefällt mir“

„Dumme“ Frage in die Runde (als Ergänzung zu dem, was schon gesagt wurde):

Wieso reicht dir java.util.Calendar bzw. java.util.Date oder java.time.<*> (die „neue“ Java 8-API) nicht aus?