`
withyou
  • 浏览: 440087 次
社区版块
存档分类
最新评论

打造完美SWT日期选择控件:(六)星期

阅读更多
 对星期这块的要求无非是以下几个点:
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;
            }
        }

    }



交口称赞 2006-12-29 11:25 发表评论
分享到:
评论

相关推荐

    SWT日期时间选择控件.rar

    swt自定义封装的日期时间选择控件,支持选择日期和时间

    一个SWT日期时间选择控件类

    一个SWT日期时间选择控件类,可方便地加入到自己的代码中,支持拖放

    SWT/JFace 自定义日历控件(可绑定注册到其他控件)

    SWT自带的DateTime控件属实不好用,而且无法绑定到其他控件上。因此自己写一个日历控件用着方便,功能大致如下: 1、日历控件可自定义设置常见的几种日期格式; 2、可以绑定注册到其他控件如:文本框、按钮、标签上...

    java swt自定义控件

    java swt自定义控件java swt自定义控件java swt自定义控件java swt自定义控件

    SWT日期控件

    SWT 第三方 date picker RCP

    SWT/JFace 控件实例

    SWT、JFACE控件实例,官方的东西,各种控件例子! 已经把包名等修复好了。直接导入IDE中可以运行。各种效果。

    纯SWT的报表库: SWT Report

    支持功能有: 1. 跨行和跨列功能 2. 页码和页数统计 3. 边距和间距调整 4. 各边框颜色设置 5. 前景和背景颜色 6. 自适应页面大小 .........一个是SWT Report的项目包,另一个是CustomReportTest 类生成的报表

    Java使用SWT JFreeChart控件实现的小游戏.zip

    Java使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的...

    SWT 自定义控件

    SWT/JFACE的控件库毕竟有限,在应用开发是我们不可避免地要自己开发一些自定义的控件

    java的swt与三方控件数据传输

    只要swt一个jar包即可,无需jacob,jna,jni等等,方法很简单

    SWT 时间控件及执行bat文件

    此例子完整的包含了swt 所需的jar文件及执行jar文件的bat文件。展示了swt 时间选择控件及其他控件的用法,以及TimerTask的用法。

    swt&jface英文教程

    swt&jface英文教程 书名:The Definitive Guide to SWT and JFace by:by Robert Harris and Rob Warner

    swt design for eclipse 3.2

    swt design for eclipse 3.2

    java浏览器控件 swt.jar 下载

    java浏览器控件 swt.jar 下载

    官方 swt api

    对swt和jface中各种控件有详细的说明

    SWT控件知识学习笔记

    对于swt控件知识的部分整理,有助于对其的学习。

    swt 使用基本控件与对话框

    第4章 使用基本控件与对话框.pdf 第4章 使用基本控件与对话框.pdf eclipse插件开发笔记,使用基本控件与对话框

    SWT控件

    NULL 博文链接:https://liuxiaobin1023-163-com.iteye.com/blog/1144212

    最完美SWT的教程

    最完美SWT的教程。 SWT(Standard Widget Toolkit) Standard Widget Toolkit是一个开源的GUI编程框架,与AWT/Swing有相似的用处,著名的开源IDE-eclipse就是用SWT开发的。 在SWT之前,Sun已经提供了一个跨平台GUI开发...

Global site tag (gtag.js) - Google Analytics