?對(duì)星期這塊的要求無(wú)非是以下幾個(gè)點(diǎn):
1:支持多語(yǔ)言。
2:支持動(dòng)態(tài)布局。
3:支持任意星期開(kāi)始。這個(gè)解釋一下,比如有的國(guó)家一個(gè)星期的開(kāi)始是星期一有的是星期日,也有可能是星期X。
老規(guī)矩上圖,看圖說(shuō)話:

中文環(huán)境,星期日為星期開(kāi)始。

中文環(huán)境,星期二為星期開(kāi)始。

英文環(huán)境,星期日為星期開(kāi)始。

日文環(huán)境,星期日為星期開(kāi)始。

自動(dòng)適應(yīng)布局的效果。總體思想是用GridLayout布局。一行七列。為了看得清楚,特意加了BORDER效果。
?以下是關(guān)鍵代碼:
private?void?initDayTitle()?{
????????dayTitles?=?new?Label[7];
????????for?(int?i?=?0;?i?<?dayTitles.length;?i++)?{
????????????final?Label?label?=?new?Label(dayTitle,?SWT.CENTER);
????????????label.setLayoutData(new?GridData(SWT.FILL,?SWT.CENTER,?true,?true));
????????????dayTitles[i]?=?label;
????????}
????????DateFormatSymbols?dateFormatSymbols?=?new?DateFormatSymbols(locale);
????????String[]?dayNames?=?dateFormatSymbols.getShortWeekdays();
????????int?minLength?=?Integer.MAX_VALUE;
????????for?(int?i?=?0;?i?<?dayNames.length;?i++)?{
????????????int?len?=?dayNames[i].length();
????????????if?(len?>?0?&&?len?<?minLength)?{
????????????????minLength?=?len;
????????????}
????????}
????????if?(minLength?>?2)?{
????????????for?(int?i?=?0;?i?<?dayNames.length;?i++)?{
????????????????if?(dayNames[i].length()?>?0)?{
????????????????????if?(locale.equals(Locale.CHINA))?{
????????????????????????if?(dayNames[i].length()?>?2)?{
????????????????????????????dayNames[i]?=?dayNames[i].substring(2,?3);
????????????????????????}
????????????????????}?else?{
????????????????????????if?(dayNames[i].length()?>?0)?{
????????????????????????????dayNames[i]?=?dayNames[i].substring(0,?3);
????????????????????????}
????????????????????}
????????????????}
????????????}
????????}
????????firstDayOfWeek?=?basicCalendar.getFirstDayOfWeek();
????????int?d?=?firstDayOfWeek;
????????for?(int?i?=?0;?i?<?dayTitles.length;?i++)?{
????????????Label?labelt?=?dayTitles[i];
????????????labelt.setText(dayNames[d]);
????????????labelt.setBackground(getBackground());
????????????if?(d?==?Calendar.SUNDAY)?{
????????????????labelt.setForeground(getDisplay().getSystemColor(SWT.COLOR_RED));
????????????}?else?if?(d?==?Calendar.SATURDAY)?{
????????????????labelt.setForeground(getDisplay().getSystemColor(SWT.COLOR_GREEN));
????????????}?else?{
????????????????labelt.setForeground(getForeground());
????????????}
????????????d++;
????????????if?(d?>?dayTitles.length)?{
????????????????d?-=?dayTitles.length;
????????????}
????????}
????}
posted on 2006-12-29 11:25
交口稱贊 閱讀(1662)
評(píng)論(1) 編輯 收藏 所屬分類:
Eclipse RCP SWT