﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-自大的人只想着怎么把面子保住，自强的人只想着怎么把事办好！-文章分类-SWT</title><link>http://www.blogjava.net/mlzry0612/category/29969.html</link><description>自大的人只想着怎么把面子保住，自强的人只想着怎么把事办好！</description><language>zh-cn</language><lastBuildDate>Mon, 10 Mar 2008 16:14:49 GMT</lastBuildDate><pubDate>Mon, 10 Mar 2008 16:14:49 GMT</pubDate><ttl>60</ttl><item><title>打造完美SWT日期选择控件</title><link>http://www.blogjava.net/mlzry0612/articles/185208.html</link><dc:creator>Daniel</dc:creator><author>Daniel</author><pubDate>Mon, 10 Mar 2008 14:53:00 GMT</pubDate><guid>http://www.blogjava.net/mlzry0612/articles/185208.html</guid><wfw:comment>http://www.blogjava.net/mlzry0612/comments/185208.html</wfw:comment><comments>http://www.blogjava.net/mlzry0612/articles/185208.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mlzry0612/comments/commentRss/185208.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mlzry0612/services/trackbacks/185208.html</trackback:ping><description><![CDATA[<img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/vip01/snap1010.jpg" /><br />
年月控制这部分分为控制按钮，月下拉列表和年Spinner（翻译为微调控制器。。。。。。。）。控制按钮没什么好说的，无非就是控制加一减一，注意边界循环就可以了。<br />
Spinner的用法很简单，看下代码：<br />
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: windowtext 0.5pt solid; background: rgb(230,230,230) 0% 50%; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; padding-top: 4px; border-bottom: windowtext 0.5pt solid; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">
<div><img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;yearChooser&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">new</span><span style="color: rgb(0,0,0)">&nbsp;Spinner(yearMonthChooser,&nbsp;SWT.READ_ONLY&nbsp;</span><span style="color: rgb(0,0,0)">|</span><span style="color: rgb(0,0,0)">&nbsp;SWT.BORDER);<br />
//初始化，只读，带边框<br />
<img id="_132_558_Open_Image" onclick="this.style.display='none'; document.getElementById('_132_558_Open_Text').style.display='none'; document.getElementById('_132_558_Closed_Image').style.display='inline'; document.getElementById('_132_558_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="_132_558_Closed_Image" onclick="this.style.display='none'; document.getElementById('_132_558_Closed_Text').style.display='none'; document.getElementById('_132_558_Open_Image').style.display='inline'; document.getElementById('_132_558_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yearChooser.addSelectionListener(</span><span style="color: rgb(0,0,255)">new</span><span style="color: rgb(0,0,0)">&nbsp;SelectionAdapter()&nbsp;</span><span style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; display: none; background-color: rgb(255,255,255)" id="_132_558_Closed_Text">...</span><span id="_132_558_Open_Text"><span style="color: rgb(0,0,0)">{<br />
<img id="_182_554_Open_Image" onclick="this.style.display='none'; document.getElementById('_182_554_Open_Text').style.display='none'; document.getElementById('_182_554_Closed_Image').style.display='inline'; document.getElementById('_182_554_Closed_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="_182_554_Closed_Image" onclick="this.style.display='none'; document.getElementById('_182_554_Closed_Text').style.display='none'; document.getElementById('_182_554_Open_Image').style.display='inline'; document.getElementById('_182_554_Open_Text').style.display='inline';" alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">public</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">void</span><span style="color: rgb(0,0,0)">&nbsp;widgetSelected(SelectionEvent&nbsp;e)&nbsp;</span><span style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; display: none; background-color: rgb(255,255,255)" id="_182_554_Closed_Text">...</span><span id="_182_554_Open_Text"><span style="color: rgb(0,0,0)">{<br />
<img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><br />
<img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">int</span><span style="color: rgb(0,0,0)">&nbsp;n&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;yearChooser.getSelection();<br />
</span><span style="color: rgb(0,128,0)"><span style="color: rgb(0,128,0)"><br />
<img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /></span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;basicCalendar.set(Calendar.YEAR,&nbsp;n);<br />
<img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yearChooser.setSelection(n);<br />
<img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setDays();<br />
<img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" /><br />
<img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0,0,0)"><br />
<img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0,0,0)">);<br />
</span><span style="color: rgb(0,0,0)">//加上选择事件监听<br />
<img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yearChooser.setMaximum(</span><span style="color: rgb(0,0,0)">3000</span><span style="color: rgb(0,0,0)">);//设置上限<br />
<img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yearChooser.setMinimum(</span><span style="color: rgb(0,0,0)">1899</span><span style="color: rgb(0,0,0)">);//设置下限<br />
<img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yearChooser.setIncrement(</span><span style="color: rgb(0,0,0)">1</span><span style="color: rgb(0,0,0)">);//步进值<br />
<img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yearChooser.setPageIncrement(</span><span style="color: rgb(0,0,0)">10</span><span style="color: rgb(0,0,0)">);//这个是按下pageup和pagedown时的步进值<br />
<img alt="" align="top" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yearChooser.setSelection(basicCalendar.get(Calendar.YEAR));//选择当前年</span></span></div>
</div>
<br />
月的下拉列表看似简单实则不然，因为我们要考虑国际化的问题。<br />
<img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/vip01/snap1013.jpg" /><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/vip01/snap1014.jpg" /><br />
以上是中文环境和英文环境下的测试效果。关键点是：月的信息从Locale中取。以下是关键代码：<br />
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-top: windowtext 0.5pt solid; background: rgb(230,230,230) 0% 50%; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; padding-top: 4px; border-bottom: windowtext 0.5pt solid; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">
<div><span style="color: rgb(0,0,255)">private</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">void</span><span style="color: rgb(0,0,0)">&nbsp;initMonth()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DateFormatSymbols&nbsp;dateFormatSymbols&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">new</span><span style="color: rgb(0,0,0)">&nbsp;DateFormatSymbols(locale);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;monthNames&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;dateFormatSymbols.getMonths();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">int</span><span style="color: rgb(0,0,0)">&nbsp;month&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;monthChooser.getSelectionIndex();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">if</span><span style="color: rgb(0,0,0)">&nbsp;(monthChooser.getItemCount()&nbsp;</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,0)">0</span><span style="color: rgb(0,0,0)">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;monthChooser.removeAll();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">for</span><span style="color: rgb(0,0,0)">&nbsp;(</span><span style="color: rgb(0,0,255)">int</span><span style="color: rgb(0,0,0)">&nbsp;i&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,0)">0</span><span style="color: rgb(0,0,0)">;&nbsp;i&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">&nbsp;monthNames.length;&nbsp;i</span><span style="color: rgb(0,0,0)">++</span><span style="color: rgb(0,0,0)">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;name&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;monthNames[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">if</span><span style="color: rgb(0,0,0)">&nbsp;(name.length()&nbsp;</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,0)">0</span><span style="color: rgb(0,0,0)">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;monthChooser.add(name);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">if</span><span style="color: rgb(0,0,0)">&nbsp;(month&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,0)">0</span><span style="color: rgb(0,0,0)">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;month&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,0)">0</span><span style="color: rgb(0,0,0)">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: rgb(0,0,255)">else</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">if</span><span style="color: rgb(0,0,0)">&nbsp;(month&nbsp;</span><span style="color: rgb(0,0,0)">&gt;=</span><span style="color: rgb(0,0,0)">&nbsp;monthChooser.getItemCount())&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;month&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;monthChooser.getItemCount()&nbsp;</span><span style="color: rgb(0,0,0)">-</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,0)">1</span><span style="color: rgb(0,0,0)">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;monthChooser.select(month);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
</div>
<br />
<img src ="http://www.blogjava.net/mlzry0612/aggbug/185208.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mlzry0612/" target="_blank">Daniel</a> 2008-03-10 22:53 <a href="http://www.blogjava.net/mlzry0612/articles/185208.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>