打造完美SWT日期选择控件:(六)星期
2006-11-28 10:52
459 查看
对星期这块的要求无非是以下几个点:
1:支持多语言。
2:支持动态布局。
3:支持任意星期开始。这个解释一下,比如有的国家一个星期的开始是星期一有的是星期日,也有可能是星期X。
老规矩上图,看图说话:
![](http://p.blog.csdn.net/images/p_blog_csdn_net/vip01/snap1017.jpg)
中文环境,星期日为星期开始。
![](http://p.blog.csdn.net/images/p_blog_csdn_net/vip01/snap1016.jpg)
中文环境,星期二为星期开始。
![](http://p.blog.csdn.net/images/p_blog_csdn_net/vip01/snap1018.jpg)
英文环境,星期日为星期开始。
![](http://p.blog.csdn.net/images/p_blog_csdn_net/vip01/snap1019.jpg)
日文环境,星期日为星期开始。
![](http://p.blog.csdn.net/images/p_blog_csdn_net/vip01/snap1020.jpg)
自动适应布局的效果。总体思想是用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, 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;
}
}
}
1:支持多语言。
2:支持动态布局。
3:支持任意星期开始。这个解释一下,比如有的国家一个星期的开始是星期一有的是星期日,也有可能是星期X。
老规矩上图,看图说话:
![](http://p.blog.csdn.net/images/p_blog_csdn_net/vip01/snap1017.jpg)
中文环境,星期日为星期开始。
![](http://p.blog.csdn.net/images/p_blog_csdn_net/vip01/snap1016.jpg)
中文环境,星期二为星期开始。
![](http://p.blog.csdn.net/images/p_blog_csdn_net/vip01/snap1018.jpg)
英文环境,星期日为星期开始。
![](http://p.blog.csdn.net/images/p_blog_csdn_net/vip01/snap1019.jpg)
日文环境,星期日为星期开始。
![](http://p.blog.csdn.net/images/p_blog_csdn_net/vip01/snap1020.jpg)
自动适应布局的效果。总体思想是用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, 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;
}
}
}
相关文章推荐
- 打造完美SWT日期选择控件:(五)控制年月
- 打造完美SWT日期选择控件:(八)未完的结束
- 打造完美SWT日期选择控件:(二)实现自适应大小
- 打造完美SWT日期选择控件:(一)寻找、比较轮子
- 打造完美SWT日期选择控件:(四)下拉列表的整体设计
- 打造完美SWT日期选择控件:(七)日期
- 打造完美SWT日期选择控件:(三)看上去像下拉列表
- 打造基于jQuery的日期选择控件
- SWT中的日期选择控件
- [Ext JS 4] 实战之 带week(星期)的日期选择控件(二)
- Ext JS 4实现带week(星期)的日期选择控件(实战二)
- [Ext JS 4] 实战之 带week(星期)的日期选择控件
- Ext JS 4实现带week(星期)的日期选择控件(实战一)
- [Ext JS 4] 实战之 带week(星期)的日期选择控件
- Ext JS 4实现带week(星期)的日期选择控件(实战一)
- [Ext JS 4] 实战之 带week(星期)的日期选择控件(三)
- [Ext JS 4] 实战之 带week(星期)的日期选择控件(三)
- Android自定义View(RollWeekView-炫酷的星期日期选择控件)
- [Ext JS 4] 实战之 带week(星期)的日期选择控件(三)