我想从现在禁用过去的日期和 2 周JCalendar
。
我已经有这个代码:
jDateChooser1.getJCalendar().setMinSelectableDate(new Date());
((JTextFieldDateEditor)jDateChooser1.getDateEditor()).setEditable(false);
我已经可以禁用过去的日期,但如何禁用未来的日期,比如从现在起 2 周?
我想从现在禁用过去的日期和 2 周JCalendar
。
我已经有这个代码:
jDateChooser1.getJCalendar().setMinSelectableDate(new Date());
((JTextFieldDateEditor)jDateChooser1.getDateEditor()).setEditable(false);
我已经可以禁用过去的日期,但如何禁用未来的日期,比如从现在起 2 周?
如此处所示,您可以使用点IDateEvaluator
赞MinMaxDateEvaluator
来使日期范围无效:
private static class RangeEvaluator extends MinMaxDateEvaluator {
@Override
public boolean isInvalid(Date date) {
return !super.isInvalid(date);
}
}
然后您可以指定一系列无效日期,例如前一天和后两周:
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
来处理不同的范围。
我还没有尝试过,但我想在未来使用日期会这样做:
Date d = new Date();
d.setTime(d.getTime() + 14 * 86400 * 1000); -- set the date 14 days forward
jDateChooser1.getJCalendar().setMinSelectableDate(d);
((JTextFieldDateEditor)jDateChooser1.getDateEditor()).setEditable(false);
而不是使用 Date 对象并且必须使用 setTime(milliseconds) 您可能希望使用适当的 Calendar 对象,该对象具有更好的方法来更改日期等。
Calendar cal = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_YEAR, 14);
Date twoweeks = calendar.getTime();
我已经在垃圾神代码的帮助下回答了我自己的问题。
这里:
Calendar min = Calendar.getInstance();
min.add(Calendar.DAY_OF_MONTH, 15);
Calendar max = Calendar.getInstance();
max.add(Calendar.DAY_OF_MONTH, 2000000);
RangeEvaluator re = new RangeEvaluator();
re.setMinSelectableDate(min.getTime());
re.setMaxSelectableDate(max.getTime());
// JCalendar jc = new JCalendar();
jDateChooser1.getJCalendar().setMinSelectableDate(min.getTime());
jDateChooser1.getJCalendar().setMaxSelectableDate(max.getTime());
((JTextFieldDateEditor)jDateChooser1.getDateEditor()).setEditable(false);
谢谢!:D