如何让GWT DatePicker使用星期一作为一周的第一天?
很多,标题说。我需要使星期一的GWT DatePicker组件作为一周的第一天。目前天标是S M T W T F S
,我希望它是M T W T F S S
。任何方式来实现它?如何让GWT DatePicker使用星期一作为一周的第一天?
如果自动区域设置检测不符合您的需求(可能在编辑的com.google.gwt.i18n.client.constants.DateTimeConstantsImpl_xy.properties
将firstDayOfTheWeek
不会是要么),唯一的办法是修改DatePicker的实施:
扩展DatePicker,写一个新的构造函数,用你自己的视图和模型调用受保护的
DatePicker(MonthSelector monthSelector, CalendarView view, CalendarModel model)
构造函数。CalendarModel可以扩展,所以你必须重写
getCurrentFirstDayOfFirstWeek
。DefaultCalendarView
是最终的,所以您必须将其复制到新类并修改其setup
方法。
这是相当混乱,这就是GWT的小缺点 - 它使用了大量的单身人士,而不是依赖注入的...
嗯......我会接受这个答案,因为我在想同样的事情。我要试一下。 – Strelok 2010-08-18 23:20:01
如果你看看DefaultCalendarView的源代码(可提供在DatePicker的受保护构造函数中),它使用CalendarUtil的getStartingDayOfWeek设置默认开始日期。 CalendarUtil
从DateTimeConstants
获取开始日期。所以,正如ju说的那样,它是由你的语言环境决定的。
问题是,你如何覆盖默认的语言环境值。说实话,我不知道该怎么做,或者甚至有可能。这显然是最简单的解决方案。
但是,如果这是不可能的,你可以做的是创建一个类延伸DatePicker
。然后创建另一个类,扩展DefaultCalendarView
并覆盖setup
方法。复制相同的方法源,但将开始日期更改为星期一,而不是使用从CalendarUtil
开始的日期。然后使用您的自定义DefaultCalendarView
创建您的自定义DatePicker
。这是一个黑客,但它应该工作。
指定不同的区域设置很简单(它位于[GWT文档](http://code.google.com/webtoolkit/doc/latest/DevGuideI18nLocale.html#LocaleSpecifying)中),但它适用于每个GWT小部件该页... BTW:你真的基本上复制我的答案?! – 2010-08-18 17:08:41
哈哈哈,当我没有答案时,我开始写我的,但我无法马上完成。当我完成并提交它时,你的存在......由于某种原因,*并没有像以前那样警告我。对不起:P – 2010-08-18 20:58:06
不用担心 - 快乐地找到某个人认为相似:-) – 2010-08-18 23:05:54
不需要继承DatePicker。请通过点击下面的网址阅读google gwt文档。 http://code.google.com/webtoolkit/doc/latest/DevGuideI18nLocale.html#LocaleSpecifying
我认为这个DatePicker正在使用你的语言环境为你自动定制DatePicker。 http://code.google.com/p/gwt-datepicker/wiki/HowToUse – 2010-08-18 08:16:01