【问题标题】:How to make GWT DatePicker to use Monday as the first day of the week?如何使 GWT DatePicker 使用星期一作为一周的第一天?
【发布时间】:2011-03-31 07:24:54
【问题描述】:

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

【问题讨论】:

标签: gwt date datepicker


【解决方案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 来设置默认开始日期。 CalendarUtilDateTimeConstants 获取开始日期。因此,正如 ju 所说,这取决于您的语言环境。

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

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

    【讨论】:

    • 指定不同的语言环境很容易(在GWT docs 中) - 但随后它将适用于页面中的每个 GWT 小部件......顺便说一句:你真的基本上复制了我的答案吗?!
    • 哈哈哈,我在没有答案的时候开始写我的,但我没能马上写完。当我完成并提交它时,你的就在那里......出于某种原因,Stackoverflow 没有像以前那样警告我。对不起:P
    • 不用担心 - 很高兴找到想法相似的人 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多