如何让GWT DatePicker使用星期一作为一周的第一天?

问题描述:

很多,标题说。我需要使星期一的GWT DatePicker组件作为一周的第一天。目前天标是S M T W T F S,我希望它是M T W T F S S。任何方式来实现它?如何让GWT DatePicker使用星期一作为一周的第一天?

+1

我认为这个DatePicker正在使用你的语言环境为你自动定制DatePicker。 http://code.google.com/p/gwt-datepicker/wiki/HowToUse – 2010-08-18 08:16:01

如果自动区域设置检测不符合您的需求(可能在编辑的com.google.gwt.i18n.client.constants.DateTimeConstantsImpl_xy.propertiesfirstDayOfTheWeek不会是要么),唯一的办法是修改DatePicker的实施:

  • 扩展DatePicker,写一个新的构造函数,用你自己的视图和模型调用受保护的DatePicker(MonthSelector monthSelector, CalendarView view, CalendarModel model)构造函数。

  • CalendarModel可以扩展,所以你必须重写getCurrentFirstDayOfFirstWeek

  • DefaultCalendarView是最终的,所以您必须将其复制到新类并修改其setup方法。

这是相当混乱,这就是GWT的小缺点 - 它使用了大量的单身人士,而不是依赖注入的...

+0

嗯......我会接受这个答案,因为我在想同样的事情。我要试一下。 – Strelok 2010-08-18 23:20:01

如果你看看DefaultCalendarView的源代码(可提供在DatePicker的受保护构造函数中),它使用CalendarUtil的getStartingDayOfWeek设置默认开始日期。 CalendarUtilDateTimeConstants获取开始日期。所以,正如ju说的那样,它是由你的语言环境决定的。

问题是,你如何覆盖默认的语言环境值。说实话,我不知道该怎么做,或者甚至有可能。这显然是最简单的解决方案。

但是,如果这是不可能的,你可以做的是创建一个类延伸DatePicker。然后创建另一个类,扩展DefaultCalendarView并覆盖setup方法。复制相同的方法源,但将开始日期更改为星期一,而不是使用从CalendarUtil开始的日期。然后使用您的自定义DefaultCalendarView创建您的自定义DatePicker。这是一个黑客,但它应该工作。

+0

指定不同的区域设置很简单(它位于[GWT文档](http://code.google.com/webtoolkit/doc/latest/DevGuideI18nLocale.html#LocaleSpecifying)中),但它适用于每个GWT小部件该页... BTW:你真的基本上复制我的答案?! – 2010-08-18 17:08:41

+0

哈哈哈,当我没有答案时,我开始写我的,但我无法马上完成。当我完成并提交它时,你的存在......由于某种原因,*并没有像以前那样警告我。对不起:P – 2010-08-18 20:58:06

+0

不用担心 - 快乐地找到某个人认为相似:-) – 2010-08-18 23:05:54

不需要继承DatePicker。请通过点击下面的网址阅读google gwt文档。 http://code.google.com/webtoolkit/doc/latest/DevGuideI18nLocale.html#LocaleSpecifying