我正在尝试创建日历以显示和修改时间表。为此,我必须更改该日历中某些日期的颜色。我按照examples创建了RangeEvaluator并突出显示了日期。问题是,如果单击该日期(例如,为了将其从忙碌更改为免费,则需要更改该日期),其颜色就会恢复正常。
这是我的代码:

RangeEvaluator evaluator = new RangeEvaluator();
//get dates from DB:
    Vector<Date> vd=SA.getCalendrier(transport);
    evaluator.setVd(vd);
    calendar.getDayChooser().addDateEvaluator(evaluator);

最佳答案

here所示,您的IDateEvaluator可能返回特定的前景色和背景色以突出显示日期。请注意,单击突出显示的日期按钮时,前景色保持设置。相反,如here所述,背景色属于所选的外观。我要依靠前景色和工具提示;我认为突出显示背景颜色是可选的。

作为一种解决方法,如here所示,您可以在PropertyChangeListener中设置bound属性来重新配置按钮,但是所选的按钮仍将根据外观进行渲染。选择一个未突出显示的按钮以查看效果。

JCalendar jc = new JCalendar();
jc.getDayChooser().addDateEvaluator(evaluator);
jc.setDate(Calendar.getInstance().getTime());
jc.addPropertyChangeListener("calendar", new PropertyChangeListener() {
    @Override
    public void propertyChange(PropertyChangeEvent e) {
        jc.setDate(Calendar.getInstance().getTime());
        …
    }
});


通常,请注意JCalendar是日期选择器,而不是日程安排器。

07-26 08:57
查看更多