在JCalendar中禁用过去的日期和从现在起2周 [英] Disable past dates and 2 weeks from now in JCalendar

查看:92
本文介绍了在JCalendar中禁用过去的日期和从现在起2周的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从JCalendar禁用过去的日期和从现在起2周.

I want to disable past dates and 2 weeks from now from a JCalendar.

我已经有了以下代码:

jDateChooser1.getJCalendar().setMinSelectableDate(new Date());
((JTextFieldDateEditor)jDateChooser1.getDateEditor()).setEditable(false);

我已经可以禁用过去的日期,但是如何禁用从现在起2周之类的将来的日期呢?

I already can disable past dates but how about disabling future dates like 2 weeks from now?

推荐答案

此处所示,您可以使用IDateEvaluator(例如MinMaxDateEvaluator)会使日期范围无效:

As shown here, you can use an IDateEvaluator like MinMaxDateEvaluator to invalidate a range of dates:

private static class RangeEvaluator extends MinMaxDateEvaluator {

    @Override
    public boolean isInvalid(Date date) {
        return !super.isInvalid(date);
    }
}

然后,您可以指定一系列无效日期,例如前一天和后两个星期:

Then you can specify a range of invalid dates, e.g. a day before and two weeks after:

    Calendar min = Calendar.getInstance();
    min.add(Calendar.DAY_OF_MONTH, -1);
    Calendar max = Calendar.getInstance();
    max.add(Calendar.DAY_OF_MONTH, 13);
    RangeEvaluator re = new RangeEvaluator();
    re.setMinSelectableDate(min.getTime());
    re.setMaxSelectableDate(max.getTime());
    JCalendar jc = new JCalendar();
    jc.getDayChooser().addDateEvaluator(re);
    jc.setCalendar(jc.getCalendar());

请注意,您可以添加RangeEvaluator的多个实例以处理不同的范围.

Note that you can add multiple instances of RangeEvaluator to handle different ranges.

这篇关于在JCalendar中禁用过去的日期和从现在起2周的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆