如何使 GWT DatePicker 使用星期一作为一周的第一天?
Posted
技术标签:
【中文标题】如何使 GWT DatePicker 使用星期一作为一周的第一天?【英文标题】:How to make GWT DatePicker to use Monday as the first day of the week? 【发布时间】:2011-03-31 07:24:54 【问题描述】:差不多,就是标题所说的。我需要让 GWT DatePicker 组件使用星期一作为一周的第一天。目前日期标签是S M T W T F S
,我希望它是M T W T F S S
。有什么方法可以实现吗?
【问题讨论】:
我认为这个 DatePicker 正在使用您的语言环境来自动为您自定义 DatePicker。 code.google.com/p/gwt-datepicker/wiki/HowToUse 【参考方案1】:如果自动区域设置检测不符合您的需求(并且可能在 com.google.gwt.i18n.client.constants.DateTimeConstantsImpl_xy.properties
中编辑 firstDayOfTheWeek
也不会),唯一的选择是修改 DatePicker 的实现:
扩展 DatePicker,编写一个新的构造函数,用你自己的视图和模型调用受保护的 DatePicker(MonthSelector monthSelector, CalendarView view, CalendarModel model)
构造函数。
CalendarModel 可以扩展,因此您必须覆盖 getCurrentFirstDayOfFirstWeek
。
DefaultCalendarView
是最终的,因此您必须将其复制到新类并修改其 setup
方法。
它相当混乱,这是 GWT 的小缺点 - 它大量使用单例而不是依赖注入...
【讨论】:
嗯...我会接受这个作为答案,因为我也在想同样的事情。我要试试看。【参考方案2】:不需要继承 DatePicker。请点击下面的 url 阅读 google gwt 文档。 http://code.google.com/webtoolkit/doc/latest/DevGuideI18nLocale.html#LocaleSpecifying
【讨论】:
【参考方案3】:如果您查看DefaultCalendarView 的源代码(可以在DatePicker 的受保护构造函数中提供),它使用CalendarUtil 的getStartingDayOfWeek 来设置默认开始日期。 CalendarUtil
从 DateTimeConstants
获取开始日期。因此,正如 ju 所说,这取决于您的语言环境。
问题是,如何覆盖默认的语言环境值。老实说,我不知道该怎么做,甚至不知道这是否可能。这显然是最简单的解决方案。
但是,如果这不可能,您可以创建一个扩展 DatePicker
的类。然后创建另一个扩展DefaultCalendarView
并覆盖setup
方法的类。复制相同的方法源,但将开始日期更改为星期一,而不是使用CalendarUtil
中的开始日期。然后使用您的自定义DefaultCalendarView
创建您的自定义DatePicker
。这是一个 hack,但它应该可以工作。
【讨论】:
指定不同的语言环境很容易(在GWT docs 中) - 但随后它将适用于页面中的每个 GWT 小部件......顺便说一句:你真的基本上复制了我的答案吗?! 哈哈哈,我在没有答案的时候开始写我的,但我没能马上写完。当我完成并提交它时,你的就在那里......出于某种原因,*** 没有像以前那样警告我。对不起:P 不用担心 - 很高兴找到想法相似的人 :-)以上是关于如何使 GWT DatePicker 使用星期一作为一周的第一天?的主要内容,如果未能解决你的问题,请参考以下文章