随笔 - 119  文章 - 3173  trackbacks - 0
<2006年12月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

交友莫独酒,茅台西凤游。
口干古井贡,心徜洋河流。
称多情杜康,趟无量双沟。
赞中华巍巍,无此不销愁。

常用链接

留言簿(68)

随笔分类(136)

随笔档案(122)

最新随笔

搜索

  •  

积分与排名

  • 积分 - 520554
  • 排名 - 93

最新评论

 对星期这块的要求无非是以下几个点:
1:支持多语言。
2:支持动态布局。
3:支持任意星期开始。这个解释一下,比如有的国家一个星期的开始是星期一有的是星期日,也有可能是星期X。
老规矩上图,看图说话:
中文环境,星期日为星期开始。
中文环境,星期二为星期开始。
英文环境,星期日为星期开始。
日文环境,星期日为星期开始。

自动适应布局的效果。总体思想是用GridLayout布局。一行七列。为了看得清楚,特意加了BORDER效果。



 以下是关键代码:
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, truetrue));
            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(23);
                        }
                    } 
else {
                        
if (dayNames[i].length() > 0) {
                            dayNames[i] 
= dayNames[i].substring(03);
                        }
                    }
                }
            }
        }
        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 交口称赞 阅读(1628) 评论(1)  编辑  收藏 所属分类: Eclipse RCP SWT

FeedBack:
# re: 打造完美SWT日期选择控件:(六)星期 2008-06-22 11:23 lhzw2001
mark   回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: