在JXDatePicker / JXMonthView中禁用日期

我正在编写的程序允许用户单击JXDatePicker上的日期来设置任务完成的日期。 我想在JXDatePicker中禁用未来日期的选择,因为在我的程序中选择将来的日期无效。

我发现JXDatePickers包含一个JXMonthView,似乎日期选择器或月份视图不允许您禁用个别/日期范围。 我可以更改各个日期和日期范围的背景颜色,这样我就可以将未来的日期作为单独的颜色。 然后,只要用户单击日历以禁止将来的日期,我就可以添加一些validation。 但是,如果我能说一下像calendar.setMaxDate(今天)这样的东西,那将会更加清晰;

有没有人知道有没有比手动编码function更简单的方法? 也许另一个日期选择器组件修复了这个问题?

如果要将日期选择限制为仅范围,可以指定上限和下限

JXDatePicker picker = new JXDatePicker(); Calendar calendar = picker.getMonthView().getCalendar(); // starting today if we are in a hurry calendar.setTime(new Date()); picker.getMonthView().setLowerBound(calendar.getTime()); // end of next week CalendarUtils.endOfWeek(calendar); calendar.add(Calendar.WEEK_OF_YEAR); picker.getMonthView().setUpperBound(calendar.getTime()); 

(摘自JavaDocs)

这基本上会限制从今天到本周末的有效可选日期。

经过几分钟的研究后,看起来JDatePicker可以在这里工作 – 请参阅http://jdatepicker.com/tour-date-restriction.html

尽管如此,如果有人知道这样做的简单方法,仍然愿意接受使用JXDatePickers完成此操作的建议。

 package org.chillies.validator; import java.util.Date; @SuppressWarnings("deprecation") public class DateValidator { public Date getlowerBoundDate(){ String date; Date date1=new Date(); Integer year=1900+date1.getYear(); date="01-Apr-"+year; return new Date(date); } public Date getupperBoundDate(){ String date; Date date1=new Date(); Integer year=1900+date1.getYear(); date="31-Mar-"+(year+1);//you can set date as you wish over here return new Date(date); } } 

其余代码就像这样应用这个类

 datePicker.setBorder(null); DateValidator datevalidator=new DateValidator(); datePicker.getMonthView().setLowerBound(datevalidator.getlowerBoundDate()); datePicker.getMonthView().setUpperBound(datevalidator.getupperBoundDate());