posts - 1,  comments - 25,  trackbacks - 0

年月控制这部分分为控制按钮,月下拉列表和年Spinner(翻译为微调控制器。。。。。。。)。控制按钮没什么好说的,无非就是控制加一减一,注意边界循环就可以了。
Spinner的用法很简单,看下代码:
    yearChooser = new Spinner(yearMonthChooser, SWT.READ_ONLY | SWT.BORDER);
//初始化,只读,带边框
        yearChooser.addSelectionListener(
new SelectionAdapter() {
            
public void widgetSelected(SelectionEvent e) {

                
int n = yearChooser.getSelection();

                basicCalendar.set(Calendar.YEAR, n);
                yearChooser.setSelection(n);
                setDays();

            }

        }
);
//加上选择事件监听

        yearChooser.setMaximum(
3000);//设置上限
        yearChooser.setMinimum(
1899);//设置下限
        yearChooser.setIncrement(
1);//步进值
        yearChooser.setPageIncrement(
10);//这个是按下pageup和pagedown时的步进值
        yearChooser.setSelection(basicCalendar.get(Calendar.YEAR));//选择当前年

月的下拉列表看似简单实则不然,因为我们要考虑国际化的问题。

以上是中文环境和英文环境下的测试效果。关键点是:月的信息从Locale中取。以下是关键代码:
private void initMonth() {
        DateFormatSymbols dateFormatSymbols 
= new DateFormatSymbols(locale);
        String[] monthNames 
= dateFormatSymbols.getMonths();
        
int month = monthChooser.getSelectionIndex();
        
if (monthChooser.getItemCount() > 0) {
            monthChooser.removeAll();
        }

        
for (int i = 0; i < monthNames.length; i++) {
            String name 
= monthNames[i];
            
if (name.length() > 0) {
                monthChooser.add(name);
            }

        }

        
if (month < 0) {
            month 
= 0;
        } 
else if (month >= monthChooser.getItemCount()) {
            month 
= monthChooser.getItemCount() - 1;
        }
        monthChooser.select(month);
    }

posted on 2008-03-10 22:53 Daniel 阅读(344) 评论(0)  编辑  收藏 所属分类: SWT

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


网站导航:
 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(3)

随笔档案

文章分类

文章档案

相册

搜索

  •  

最新评论