Java GWT日期框-禁用特定日期

Java GWT日期框-禁用特定日期,java,gwt,datepicker,Java,Gwt,Datepicker,我想禁用“我的日期”框中的特定日期。我用这段代码试过了,但是指定的日期(当前日期)没有被禁用 final DateBox dateBox = new DateBox(); dateBox.getDatePicker().addShowRangeHandler(new ShowRangeHandler<Date>() { @Override public void onShowRange(final ShowRangeEvent<Date> event)

我想禁用“我的日期”框中的特定日期。我用这段代码试过了,但是指定的日期(当前日期)没有被禁用

final DateBox dateBox = new DateBox();
dateBox.getDatePicker().addShowRangeHandler(new ShowRangeHandler<Date>() {

    @Override
    public void onShowRange(final ShowRangeEvent<Date> event) {
        List<Date> disabledDates = new ArrayList<Date>();
        disabledDates.add(new Date());
        dateBox.getDatePicker().setTransientEnabledOnDates(false, disabledDates);
    }
});
final DateBox DateBox=new DateBox();
dateBox.getDatePicker().addShowRangeHandler(新的ShowRangeHandler()){
@凌驾
在ShowRange上公开作废(最终ShowRange事件){
List disabledDates=new ArrayList();
添加(新日期());
dateBox.getDatePicker().SetTransientEnabledDates(false,disabledDates);
}
});
还有别的办法吗

编辑:以apanizo为例,第29.5天看起来是灰色的,但仍然可以点击


非常抱歉,我没有测试上一个答案的代码

我刚刚试过,你的代码对我有效,我做的唯一一件事就是通过
setTransientEnabledOnDates(false,dateToDisable)传递我不想要的所有日期方法

例如:

public void onModuleLoad() {
    final DateBox dateBox = new DateBox();

    dateBox.getDatePicker().addShowRangeHandler(new ShowRangeHandler<Date>() {
        @Override
        public void onShowRange(final ShowRangeEvent<Date> dateShowRangeEvent) {
            final Date today = new Date(); //30 May 3014
            final Date yesterday = new Date(today.getTime()- 24*60*60*1000);

            //disabling yesterday - 29 May of 2014
            dateBox.getDatePicker().setTransientEnabledOnDates(false, yesterday);

        }
    });

    RootPanel.get().add(dateBox);

  }

中,只需在日期选择器上添加一个值已更改的侦听器,以侦听日期中的任何更改

例如,如果不允许当前日期,并且选择了该日期,则只需放弃更改并恢复到以前的日期,或者根据需要显示警告消息,并为当前日期添加样式以将其视为禁用

final DateBox dateBox = new DateBox();
dateBox.getDatePicker().addShowRangeHandler(new ShowRangeHandler<Date>() {

    @Override
    public void onShowRange(final ShowRangeEvent<Date> event) {
        List<Date> disabledDates = new ArrayList<Date>();
        disabledDates.add(new Date());
        dateBox.getDatePicker().setTransientEnabledOnDates(false, disabledDates);
    }
});
此处日期时间格式仅用于检查日期,检查日期时时间被丢弃

示例代码:

private Date prevDate;
...

final DateBox dateBox = new DateBox();
final DateTimeFormat dateTimeFormat=DateTimeFormat.getFormat("MM/dd/yyyy");

dateBox.getDatePicker().addValueChangeHandler(new ValueChangeHandler<Date>() {

    @Override
    public void onValueChange(ValueChangeEvent<Date> event) {
        if (dateTimeFormat.format(event.getValue()).equals(dateTimeFormat.format(new Date()))) {
            dateBox.setValue(prevDate);
            // show warning message here
        }else{
            prevDate=event.getValue();
        }
    }
});
private-Date-prevDate;
...
最终日期框DateBox=新日期框();
final DateTimeFormat DateTimeFormat=DateTimeFormat.getFormat(“MM/dd/yyyy”);
dateBox.getDatePicker().addValueChangeHandler(新的ValueChangeHandler()){
@凌驾
ValueChange上的公共作废(ValueChangeEvent事件){
if(dateTimeFormat.format(event.getValue()).equals(dateTimeFormat.format(new Date())){
dateBox.setValue(prevDate);
//在此处显示警告消息
}否则{
prevDate=event.getValue();
}
}
});

似乎没什么区别嗨,简,刚刚更新了我的答案:)