2016-04-16 4 views
0

Я пытаюсь создать календарь для отображения и изменения расписания. Для этого мне нужно изменить цвет некоторых дат в этом календаре. Я последовал за examples, который создал RangeEvaluator и смог выделить даты. Проблема в том, что если я нажму на эту дату (и мне нужно, чтобы изменить ее из занятости, чтобы бесплатно получить пример), ее цвет возвращается к норме. Вот мой код:
Обновить RangeEvaluator в JCalendar

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

Пожалуйста, отредактируйте свой вопрос, чтобы включить [mcve], который показывает проблему, которую вы описываете. – trashgod

ответ

1

Как показано here, ваш IDateEvaluator вероятен возвращение конкретных цветов текста и фона, чтобы выделить даты. Обратите внимание, что цвет переднего плана остается установленным, когда вы нажимаете выделенную кнопку даты. Напротив, как упоминалось here, цвет фона принадлежит выбранному Look & Feel. Я полагался на цвет и подсказку переднего плана; Я бы предпочел подсветку фона.

В качестве обходного пути, показанный here, вы можете установить связанное свойство в вашем PropertyChangeListener перенастроить кнопки, но выбранная кнопка будет еще быть оказаны в соответствии с Look & Feel. Выберите кнопку , а не, чтобы увидеть эффект.

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 является дата Chooser, а не в день планировщик.