如何使用com.google.gwt.user.datepicker.client.DateBox限制可用的日期范围

我需要限制用户可以从com.google.gwt.user.datepicker.client.DateBox选择的Dates

我似乎无法弄清楚如何限制最小Date因此他们无法选择过去的日期。

如果我不能用com.google.gwt.user.datepicker.client.DateBox执行此操作,是否有一个替代DateBox小部件,这将允许我这种灵活性?

根据我收到的建议,我想出的是将可选日期限制在当天和之后。 这适用于GWT 2.1.1

 final DateBox dateBox = new DateBox(); dateBox.addValueChangeHandler(new ValueChangeHandler() { @Override public void onValueChange(final ValueChangeEvent dateValueChangeEvent) { if (dateValueChangeEvent.getValue().before(today())) { dateBox.setValue(today(), false); } } }); dateBox.getDatePicker().addShowRangeHandler(new ShowRangeHandler() { @Override public void onShowRange(final ShowRangeEvent dateShowRangeEvent) { final Date today = today(); Date d = zeroTime(dateShowRangeEvent.getStart()); while (d.before(today)) { dateBox.getDatePicker().setTransientEnabledOnDates(false, d); d = nextDay(d); } } }); 

为了完整起见,这里是操作日期的static帮助方法:

 private static Date today() { return zeroTime(new Date()); } /** this is important to get rid of the time portion, including ms */ private static Date zeroTime(final Date date) { return DateTimeFormat.getFormat("yyyyMMdd").parse(DateTimeFormat.getFormat("yyyyMMdd").format(date)); } private static Date nextDay(final Date date) { return zeroTime(new Date(date.getTime() + 24 * 60 * 60 * 1000)); } 

我在这里猜测你可能需要使用addValueChangeHandler。 一个例子:

 datebox.addValueChangeHandler(new ValueChangeHandler() { public void onValueChange(ValueChangeEvent event) { Date date = event.getValue(); if (date.before(new Date())) { fromDatePicker.setValue(new Date()); } } }); 

在这里,当用户以某种方式选择过去的日期时,它会自动将其设置为当前日期(或任何符合您需求的日期)。