2010-08-18 35 views
8

很多,標題說。我需要使星期一的GWT DatePicker組件作爲一週的第一天。目前天標是S M T W T F S,我希望它是M T W T F S S。任何方式來實現它?如何讓GWT DatePicker使用星期一作爲一週的第一天?

+1

我認爲這個DatePicker正在使用你的語言環境爲你自動定製DatePicker。 http://code.google.com/p/gwt-datepicker/wiki/HowToUse – 2010-08-18 08:16:01

回答

5

如果自動區域設置檢測不符合您的需求(可能在編輯的com.google.gwt.i18n.client.constants.DateTimeConstantsImpl_xy.propertiesfirstDayOfTheWeek不會是要麼),唯一的辦法是修改DatePicker的實施:

  • 擴展DatePicker,寫一個新的構造函數,用你自己的視圖和模型調用受保護的DatePicker(MonthSelector monthSelector, CalendarView view, CalendarModel model)構造函數。

  • CalendarModel可以擴展,所以你必須重寫getCurrentFirstDayOfFirstWeek

  • DefaultCalendarView是最終的,所以您必須將其複製到新類並修改其setup方法。

這是相當混亂,這就是GWT的小缺點 - 它使用了大量的單身人士,而不是依賴注入的...

+0

嗯......我會接受這個答案,因爲我在想同樣的事情。我要試一下。 – Strelok 2010-08-18 23:20:01

2

如果你看看DefaultCalendarView的源代碼(可提供在DatePicker的受保護構造函數中),它使用CalendarUtil的getStartingDayOfWeek設置默認開始日期。 CalendarUtilDateTimeConstants獲取開始日期。所以,正如ju說的那樣,它是由你的語言環境決定的。

問題是,你如何覆蓋默認的語言環境值。說實話,我不知道該怎麼做,或者甚至有可能。這顯然是最簡單的解決方案。

但是,如果這是不可能的,你可以做的是創建一個類延伸DatePicker。然後創建另一個類,擴展DefaultCalendarView並覆蓋setup方法。複製相同的方法源,但將開始日期更改爲星期一,而不是使用從CalendarUtil開始的日期。然後使用您的自定義DefaultCalendarView創建您的自定義DatePicker。這是一個黑客,但它應該工作。

+0

指定不同的區域設置很簡單(它位於[GWT文檔](http://code.google.com/webtoolkit/doc/latest/DevGuideI18nLocale.html#LocaleSpecifying)中),但它適用於每個GWT小部件該頁... BTW:你真的基本上覆制我的答案?! – 2010-08-18 17:08:41

+0

哈哈哈,當我沒有答案時,我開始寫我的,但我無法馬上完成。當我完成並提交它時,你的存在......由於某種原因,Stackoverflow並沒有像以前那樣警告我。對不起:P – 2010-08-18 20:58:06

+0

不用擔心 - 快樂地找到某個人認爲相似:-) – 2010-08-18 23:05:54

相關問題