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

时间:2010-08-18 01:09:12

标签: gwt date datepicker

差不多,标题是什么。我需要使GWT DatePicker组件使用星期一作为一周的第一天。目前日期标签为S M T W T F S,我希望它为M T W T F S S。有什么办法可以实现吗?

3 个答案:

答案 0 :(得分:5)

如果自动区域设置检测不符合您的需求(并且可能不会编辑firstDayOfTheWeek中的com.google.gwt.i18n.client.constants.DateTimeConstantsImpl_xy.properties),则唯一的选择是修改DatePicker的实现:< / p>

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

  • 可以扩展CalendarModel,因此您必须覆盖getCurrentFirstDayOfFirstWeek

  • DefaultCalendarView是最终版,因此您必须将其复制到新类并修改其setup方法。

它非常混乱,这是GWT的一小部分缺点 - 它大量使用Singletons而不是依赖注入...

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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

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

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