Disable multiple date ranges jDateChooser

前端 未结 2 776
梦如初夏
梦如初夏 2020-12-04 03:42

I want to disable multiple date ranges on a JCalendar. I\'m following these steps, but I need to know how can I add multiple date evaluators. Help me please, thanks.

2条回答
  •  渐次进展
    2020-12-04 04:03

    Just call addDateEvaluator() for each RangeEvaluator that you create. This adds the RangeEvaluator to a List dateEvaluators inside JDayChooser. Later, JDayChooser iterates over the list when it decides how to draw the day buttons.

    Edit: Here's the RangeEvaluator I used.

    private static class RangeEvaluator extends MinMaxDateEvaluator {
    
        @Override
        public boolean isInvalid(Date date) {
            return !super.isInvalid(date);
        }
    }
    

    And here's how I used it.

    RangeEvaluator re = new RangeEvaluator();
    re.setMinSelectableDate(...);
    re.setMaxSelectableDate(...);
    JCalendar jc = new JCalendar();
    jc.getDayChooser().addDateEvaluator(re);
    

    One problem I noticed is that you have to tell the JDayChooser to reconfigure its buttons using the new evaluator. You can fire a property change event or just change a bound property.

    jc.setCalendar(jc.getCalendar());
    

提交回复
热议问题