差不多,标题是什么。我需要使GWT DatePicker组件使用星期一作为一周的第一天。目前日期标签为S M T W T F S
,我希望它为M T W T F S S
。有什么办法可以实现吗?
答案 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来设置默认的开始日期。 CalendarUtil
从DateTimeConstants
获取开始日期。所以,正如ju所说,这取决于你的语言环境。
问题是,如何覆盖默认的区域设置值。说实话,我不知道该怎么做或者甚至可能。这显然是最简单的解决方案。
但是,如果不可能,那么您可以创建一个扩展DatePicker
的类。然后创建另一个扩展DefaultCalendarView
的类并覆盖setup
方法。复制相同的方法源,但将开始日期更改为星期一,而不是使用CalendarUtil
的开始日期。然后使用自定义DatePicker
创建自定义DefaultCalendarView
。这是一个黑客,但它应该工作。