﻿<?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-log4deng</title><link>http://www.blogjava.net/qiyadeng/</link><description>if(log.itWillForget()){
&lt;br&gt;&amp;nbsp;&amp;nbsp;
     log.blog("log4deng!"); 
&lt;br&gt;
}&lt;br&gt;
else if(log.isYourExperience){
&lt;br&gt;&amp;nbsp;&amp;nbsp;
     log.blog("log4deng!"); 
&lt;br&gt;
}&lt;br&gt;
......</description><language>zh-cn</language><lastBuildDate>Sat, 11 Oct 2008 10:20:44 GMT</lastBuildDate><pubDate>Sat, 11 Oct 2008 10:20:44 GMT</pubDate><ttl>60</ttl><item><title>Google 黑板报 -- Google 中国的博客网志: 十二生肖代表队&amp;mdash;&amp;mdash;谷歌 Doodle 08 特辑 （结束篇）</title><link>http://www.blogjava.net/qiyadeng/archive/2008/08/26/224459.html</link><dc:creator>qiyadeng</dc:creator><author>qiyadeng</author><pubDate>Tue, 26 Aug 2008 05:11:00 GMT</pubDate><guid>http://www.blogjava.net/qiyadeng/archive/2008/08/26/224459.html</guid><wfw:comment>http://www.blogjava.net/qiyadeng/comments/224459.html</wfw:comment><comments>http://www.blogjava.net/qiyadeng/archive/2008/08/26/224459.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qiyadeng/comments/commentRss/224459.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qiyadeng/services/trackbacks/224459.html</trackback:ping><description><![CDATA[<p>8 月 24 日晚，在鸟巢国家体育场，当站在舷梯上的运动员慢慢卷起画轴、奥运圣火渐渐熄灭时，2008 北京奥运会，一届被国际奥委会主席罗格誉为“真正的无与伦比”的奥运会，正式与大家告别了。 <br>与此同时，由 12 位特殊的运动员所组成的十二生肖代表队，也结束了它们奥运期间在谷歌 Doodle 舞台上的精彩表演。今天，就让我们再次回味一下它们在过去的十七天里带给我们的精彩吧！<br><a href="http://googlechinablog.com/uploaded_images/0808-750296.gif"><br><img alt="" src="http://googlechinablog.com/uploaded_images/0808-750294.gif" border="0"></a><br>8月8日开幕式(opening)<br><a href="http://googlechinablog.com/uploaded_images/91-739765.GIF"><br><img alt="" src="http://googlechinablog.com/uploaded_images/91-739762.GIF" border="0"></a><br>8月9日自行车(cycling)<br><a href="http://googlechinablog.com/uploaded_images/101-710525.GIF"><br><img alt="" src="http://googlechinablog.com/uploaded_images/101-710523.GIF" border="0"></a><br>8月10日举重(weightlifting)<br><a href="http://googlechinablog.com/uploaded_images/0811-758560.gif"><br><img alt="" src="http://googlechinablog.com/uploaded_images/0811-758558.gif" border="0"></a><br>8月11日跳水(diving)<br><a href="http://googlechinablog.com/uploaded_images/0812-722473.gif"><br><img alt="" src="http://googlechinablog.com/uploaded_images/0812-722471.gif" border="0"></a><br>8月12日艺术体操(rhythm)<br><a href="http://googlechinablog.com/uploaded_images/131-763577.GIF"><br><img alt="" src="http://googlechinablog.com/uploaded_images/131-763575.GIF" border="0"></a><br>8月13日吊环(rings)<br><a href="http://googlechinablog.com/uploaded_images/141-727180.GIF"><br><img alt="" src="http://googlechinablog.com/uploaded_images/141-727177.GIF" border="0"></a><br>8月14日篮球(basketball)<br><a href="http://googlechinablog.com/uploaded_images/0815-718944.gif"><br><img alt="" src="http://googlechinablog.com/uploaded_images/0815-718942.gif" border="0"></a><br>8月15日羽毛球(badminton)<br><a href="http://googlechinablog.com/uploaded_images/161-743471.GIF"><br><img alt="" src="http://googlechinablog.com/uploaded_images/161-743469.GIF" border="0"></a><br>8月16日足球(soccer)<br><a href="http://googlechinablog.com/uploaded_images/171-753377.GIF"><br><img alt="" src="http://googlechinablog.com/uploaded_images/171-753375.GIF" border="0"></a><br>8月17日赛艇(rowing)<br><a href="http://googlechinablog.com/uploaded_images/0818-777995.gif"><br><img alt="" src="http://googlechinablog.com/uploaded_images/0818-777992.gif" border="0"></a><br>8月18日乒乓球(pingpong)<br><a href="http://googlechinablog.com/uploaded_images/0819-754772.gif"><br><img alt="" src="http://googlechinablog.com/uploaded_images/0819-754769.gif" border="0"></a><br>8月19日游泳(swimming)<br><a href="http://googlechinablog.com/uploaded_images/201-715597.GIF"><br><img alt="" src="http://googlechinablog.com/uploaded_images/201-715595.GIF" border="0"></a><br>8月20日田径(trackfield)<br><a href="http://googlechinablog.com/uploaded_images/0821_highjump-783895.gif"><br><img alt="" src="http://googlechinablog.com/uploaded_images/0821_highjump-783893.gif" border="0"></a><br>8月21日跳高(highjump)<br><a href="http://googlechinablog.com/uploaded_images/0822_martialarts-781900.gif"><br><img alt="" src="http://googlechinablog.com/uploaded_images/0822_martialarts-781898.gif" border="0"></a><br>8月22日武术(martialarts)<br><a href="http://googlechinablog.com/uploaded_images/0823_baseball-759302.gif"><br><img alt="" src="http://googlechinablog.com/uploaded_images/0823_baseball-759300.gif" border="0"></a><br>8月23日棒球(baseball)<br><a href="http://googlechinablog.com/uploaded_images/0824-726341.gif"><br><img alt="" src="http://googlechinablog.com/uploaded_images/0824-726339.gif" border="0"></a><br>8月24日闭幕式(closing_ceremonies) <p><a href="http://googlechinablog.com/2008/08/doodle-08_25.html">Google 黑板报 -- Google 中国的博客网志: 十二生肖代表队——谷歌 Doodle 08 特辑 （结束篇）</a></p><img src ="http://www.blogjava.net/qiyadeng/aggbug/224459.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qiyadeng/" target="_blank">qiyadeng</a> 2008-08-26 13:11 <a href="http://www.blogjava.net/qiyadeng/archive/2008/08/26/224459.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>尼日利亚球迷令中国球迷汗颜的标语</title><link>http://www.blogjava.net/qiyadeng/archive/2008/08/20/223225.html</link><dc:creator>qiyadeng</dc:creator><author>qiyadeng</author><pubDate>Wed, 20 Aug 2008 04:37:00 GMT</pubDate><guid>http://www.blogjava.net/qiyadeng/archive/2008/08/20/223225.html</guid><wfw:comment>http://www.blogjava.net/qiyadeng/comments/223225.html</wfw:comment><comments>http://www.blogjava.net/qiyadeng/archive/2008/08/20/223225.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/qiyadeng/comments/commentRss/223225.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qiyadeng/services/trackbacks/223225.html</trackback:ping><description><![CDATA[<p>&nbsp;</p> <p><a href="http://www.blogjava.net/images/blogjava_net/qiyadeng/WindowsLiveWriter/f541ffebded9_B140/Img702828_t_2.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="484" alt="Img702828_t" src="http://www.blogjava.net/images/blogjava_net/qiyadeng/WindowsLiveWriter/f541ffebded9_B140/Img702828_t_thumb.jpg" width="644" border="0"></a></p><img src ="http://www.blogjava.net/qiyadeng/aggbug/223225.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qiyadeng/" target="_blank">qiyadeng</a> 2008-08-20 12:37 <a href="http://www.blogjava.net/qiyadeng/archive/2008/08/20/223225.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>北极之光</title><link>http://www.blogjava.net/qiyadeng/archive/2008/08/19/222906.html</link><dc:creator>qiyadeng</dc:creator><author>qiyadeng</author><pubDate>Tue, 19 Aug 2008 00:39:00 GMT</pubDate><guid>http://www.blogjava.net/qiyadeng/archive/2008/08/19/222906.html</guid><wfw:comment>http://www.blogjava.net/qiyadeng/comments/222906.html</wfw:comment><comments>http://www.blogjava.net/qiyadeng/archive/2008/08/19/222906.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qiyadeng/comments/commentRss/222906.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qiyadeng/services/trackbacks/222906.html</trackback:ping><description><![CDATA[<p></p> <p><embed src="http://www.youtube.com/v/qIXs6Sh0DKs&amp;hl=en&amp;fs=1" width="425" height="344" type="application/x-shockwave-flash" allowfullscreen="true"></embed></p> <p>极光是南北极地区特有的一种大气发光现象。极光在东西方的神话传说中都留下了美丽的身影，现代科学的发展，使人类能够用理性的眼光看待极光，对它作出科学的解释。<br>长期以来，极光的成因机理未能得到满意的解释。在相当长一段时间内，人们一直认为极光可能是由以下三种原因形成的。一种看法认为极光是地球外面燃起的大火，因为北极区临近地球的边缘，所以能看到这种大火。另一种看法认为，极光是红日西沉以后，透射反照出来的辉光。还有一种看法认为，极地冰雪丰富，它们在白天吸收阳光，贮存起来，到夜晚释放出来，便成了极光。总之，众说纷纭，无一定论。直到20世纪60年代，将地面观测结果与卫星和火箭探测到的资料结合起来研究，才逐步形成了极光的物理性描述。  <p>现在人们认识到，极光一方面与地球高空大气和地磁场的大规模相互作用有关，另一方面又与太阳喷发出来的高速带电粒子流有关，这种粒子流通常称为太阳风。由此可见，形成极光必不可少的条件是大气、磁场和太阳风，缺一不可。具备这三个条件的太阳系其他行星，如木星和水星，它们的周围，也会产生极光，这已被实际观察的事实所证明。  <p>地磁场分布在地球周围，被太阳风包裹着，形成一个棒槌状的胶体，它的科学名称叫做磁层。为了更形象化，我们打这样一个比方。可以把磁层看成一个巨大无比的电视机显像管，它将进入高空大气的太阳风粒子流汇聚成束，聚焦到地磁的极区，极区大气就是显像管的荧光屏，极光则是电视屏幕上移动的图像。但是，这里的电视屏幕却不是 18英寸或 24英寸，而是直径为4000公里的极区高空大气。通常，地面上的观众，在某个地方只能见到画面的l／50。在电视显像管中，电子束击中电视屏幕，因为屏上涂有发光物质，会发射出光，显示成图像。同样，来自空间的电子束，打入极区高空大气层时，会激发大气中的分子和原子，导致发光，人们便见到了极光的图像显示。在电视显像管中，是一对电极和一个电磁铁作用于电子束，产生并形成一种活动的图像。在极光发生时，极光的显示和运动则是由于粒子束受到磁层中电场和磁场变化的调制造成的。  <p>极光不仅是个光学现象，而且是个无线电现象，可以用雷达进行探测研究，它还会辐射出某些无线电波。有人还说，极光能发出各种各样的声音。极光不仅是科学研究的重要课题，它还直接影响到无线电通信，长电缆通信，以及长的管道和电力传送线等许多实用工程项目。极光还可以影响到气候，影响生物学过程。当然，极光也还有许许多多没有解开的谜。<br>极光被视为自然界中最漂亮的奇观之一。如果我们乘着宇宙飞船，越过地球的南北极上空，从遥远的太空向地球望去，会见到围绕地球磁极存在一个闪闪发亮的光环，这个环就叫做极光卵。由于它们向太阳的一边有点被压扁，而背太阳的一边却稍稍被拉伸，因而呈现出卵一样的形状。极光卵处在连续不断的变化之中，时明时暗，时而向赤道方向伸展，时而又向极点方向收缩。处在午夜部分的光环显得最宽最明亮。长期观测统计结果表明，极光最经常出现的地方是在南北磁纬度67度附近的两个环带状区域内，分别称作南极光区和北极光区。在极光区内差不多每天都会发生极光活动。在极光卵所包围的内部区域，通常叫做极盖区，在该区域内，极光出现的机会反而要比纬度较低的极光区来得少。在中低纬地区，尤其是近赤道区域，很少出现极光，但并不是说压根儿观测不到极光。1958年2月10日夜间的一次特大极光，在热带都能见到，而且显示出鲜艳的红色。这类极光往往与特大的太阳耀斑暴发和强烈的地磁暴有关。  <p>在寒冷的极区，人们举目瞭望夜空，常常见到五光十色，千姿百态，各种各样形状的极光。毫不夸大地说，在世界上简直找不出两个一模一样的极光形体来，从科学研究的角度，人们将极光按其形态特征分成五种：一是底边整齐微微弯曲的圆弧状的极光孤；二是有弯扭折皱的飘带状的极光带；三是如云朵一般的片朵状的极光片；四是面纱一样均匀的帐幔状的极光幔；五是沿磁力线方向的射线状的极光芒。  <p>极光形体的亮度变化也是很大的，从刚刚能看得见的银河星云般的亮度，一直亮到满月时的月亮亮度。在强极光出现时，地面上物体的轮廓都能被照见，甚至会照出物体的影子来。最为动人的当然是极光运动所造成的瞬息万变的奇妙景象。我们形容事物变得快时常说：“眼睛一眨，老母鸡变鸭。”极光可真是这样，翻手为云，覆手为雨，变化莫测，而这一切又往往发生在几秒钟或数分钟之内。极光的运动变化，是自然界这个魔术大师，以天空为舞台上演的一出光的活剧，上下纵横成百上千公里，甚至还存在近万公里长的极光带。这种宏伟壮观的自然景象，好像沾了一点仙气似的，颇具神秘色彩。令人叹为观止的则是极光的色彩，早已不能用五颜六色去描绘。说到底，其本色不外乎是红、绿、紫、蓝、白、黄，可是大自然这一超级画家用出神入化的手法，将深浅浓淡、隐显明暗一搭配、一组合，好家伙，一下子变成了万花筒啦。</p><img src ="http://www.blogjava.net/qiyadeng/aggbug/222906.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qiyadeng/" target="_blank">qiyadeng</a> 2008-08-19 08:39 <a href="http://www.blogjava.net/qiyadeng/archive/2008/08/19/222906.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>老鼠奥运会</title><link>http://www.blogjava.net/qiyadeng/archive/2008/08/06/220488.html</link><dc:creator>qiyadeng</dc:creator><author>qiyadeng</author><pubDate>Wed, 06 Aug 2008 10:08:00 GMT</pubDate><guid>http://www.blogjava.net/qiyadeng/archive/2008/08/06/220488.html</guid><wfw:comment>http://www.blogjava.net/qiyadeng/comments/220488.html</wfw:comment><comments>http://www.blogjava.net/qiyadeng/archive/2008/08/06/220488.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/qiyadeng/comments/commentRss/220488.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qiyadeng/services/trackbacks/220488.html</trackback:ping><description><![CDATA[<p></p> <p><img src="http://sports.cctv.com/20080806/images/1218013605535_20080806142213a18b2.jpg"></p> <p>看清楚了，这可是154公斤。</p> <p><img src="http://sports.cctv.com/20080806/images/1218013605601_2008080614225843f06.jpg"></p> <p><img src="http://sports.cctv.com/20080806/images/1218013605606_20080806142355e8071.jpg"></p> <p><img src="http://sports.cctv.com/20080806/images/1218013605611_20080806142413d779a.jpg"></p> <p><img src="http://sports.cctv.com/20080806/images/1218013605616_20080806142433b3b75.jpg"></p> <p>这可是我们国家老鼠的强项</p> <p><img src="http://sports.cctv.com/20080806/images/1218013605620_2008080614253306836.jpg"></p> <p><img src="http://sports.cctv.com/20080806/images/1218013605624_20080806142601339e0.jpg"></p> <p><img src="http://sports.cctv.com/20080806/images/1218013605628_20080806142649532b2.jpg"></p> <p><img src="http://sports.cctv.com/20080806/images/1218013605632_200808061427161fdc2.jpg"></p> <p>“刘翔”</p><img src ="http://www.blogjava.net/qiyadeng/aggbug/220488.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qiyadeng/" target="_blank">qiyadeng</a> 2008-08-06 18:08 <a href="http://www.blogjava.net/qiyadeng/archive/2008/08/06/220488.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Swing中异常处理</title><link>http://www.blogjava.net/qiyadeng/archive/2008/07/29/218302.html</link><dc:creator>qiyadeng</dc:creator><author>qiyadeng</author><pubDate>Tue, 29 Jul 2008 03:18:00 GMT</pubDate><guid>http://www.blogjava.net/qiyadeng/archive/2008/07/29/218302.html</guid><wfw:comment>http://www.blogjava.net/qiyadeng/comments/218302.html</wfw:comment><comments>http://www.blogjava.net/qiyadeng/archive/2008/07/29/218302.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qiyadeng/comments/commentRss/218302.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qiyadeng/services/trackbacks/218302.html</trackback:ping><description><![CDATA[<p>&nbsp; <p>每个Java程序员都要处理异常，异常处理在应用程序中起着重要的作用。在Java世界中，处理异常看上去不是那么简单，不仅仅是在异常发生的地方，优雅的报告异常。 <p><b>使用ThreadGroup</b><b>处理异常</b> <p>ThreadGroup类中在这个时候大部分方法已经作废了，但是该类还是很有用的。ThreadGroup类有一个方法uncaughtException(Thread,Throwable),意思是：当线程组中的线程因为异常而终止时，Java虚拟机调用该方法。这样你可以考虑继承ThreadGroup类来处理你应用中没有捕获的异常。 <p><b>public</b> <b>class</b> AppSpecificThreadGroup <b>extends</b> ThreadGroup { <p><b>public</b> <b>void</b> uncaughtException(Thread, Throwable) { <p>// app specific error handling here <p>// ex: if fatal, release resources <p>// show user dialog <p>} <p>} <p>这样在你的应用启动的时候，把你的线程加入到线程组(Thread group)中。<pre><b>public</b> <b>class</b> ApplicationMain {</pre><pre>&nbsp; <b>public</b> <b>static</b> <b>void</b> main(String[] args) {</pre><pre>&nbsp;&nbsp;&nbsp; Runnable r = <b>new</b> ApplicationStarter(args);</pre><pre>&nbsp;&nbsp;&nbsp; ThreadGroup g = <b>new</b> AppSpecificThreadGroup();</pre><pre>&nbsp;&nbsp;&nbsp; Thread t = <b>new</b> Thread(g, r);</pre><pre>&nbsp;&nbsp;&nbsp; t.start();</pre><pre>&nbsp; }</pre><pre>&nbsp; </pre><pre>&nbsp; <b>private</b> <b>static</b> <b>void</b> doStart(String[] args) {</pre><pre>&nbsp;&nbsp;&nbsp; // start application here...</pre><pre>&nbsp; }</pre><pre>&nbsp; </pre><pre>&nbsp; <b>private</b> <b>static</b> <b>class</b> ApplicationStarter {</pre><pre>&nbsp;&nbsp;&nbsp; <b>private</b> String[] args;</pre><pre>&nbsp;&nbsp;&nbsp; ApplicationStarter(String[] args) {</pre><pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.args = args;</pre><pre>&nbsp;&nbsp;&nbsp; }</pre><pre>&nbsp;&nbsp;&nbsp; </pre><pre>&nbsp;&nbsp;&nbsp; <b>public</b> <b>void</b> run() {</pre><pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; doStart(args);</pre><pre>&nbsp;&nbsp;&nbsp; }</pre><pre>&nbsp; }</pre><pre>}</pre>
<p><b>使用Java5</b><b>的Thread.UncaughtExceptionHandler</b>
<p>当认识到ThreadGroup.uncaughtException(Thread,Throwable)方法的巨大作用时，Sun团队在Java5版本站中增强了未捕获的异常处理的功能，引入了Thread.UncaughtExceptionHandler接口，另外这个接口引入了两个新的”Check points”用于处理异常。Thread类有两个属性-uncaughtExceptionHandler和defaultUncaughtExceptionHandler，它们有相应的get/set方法。但是这两个方法是不同的。让我们看看处理异常的过程。
<p>n 使用uncaughtExceptionHandler为当前线程处理异常。
<p>n 如果uncaughtExceptionHandler为空(null)，使用线程组(如果用户没有显示设置，线程组是uncaughtExceptionHandler的默认实现)。
<p>n 如果线程组是默认的实现，但是不是根线程组，将把错误处理委派给父线程组。
<p>n 如果线程组是默认的实现，并且是根线程组，将使用线程(Thread)类上设置的defaultUncaughtExceptionHandler方法。
<p>n 如果在线程类没有设置defaultUncaughtExceptionHandler，将调用Java5之前的ThreadGroup类中的未捕获异常方法。
<p>实现Thread.UncaughtExceptionHandler接口看起来也像上面实现ThreadGroup接口。<pre><b>public</b> <b>class</b> AppSpecificExceptionHandler <b>implements</b> Thread.UncaughtExceptionHandler {</pre><pre>&nbsp; </pre><pre>&nbsp;<b>public</b> <b>void</b> uncaughtException(Thread, Throwable) {</pre><pre>&nbsp;&nbsp; // app specific error handling here</pre><pre>&nbsp;&nbsp; // ex: if fatal, release resources</pre><pre>&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp;&nbsp; show user dialog</pre><pre> }</pre><pre>}</pre>
<p>在应用程序中插入如下:<pre><b>public</b> <b>class</b> ApplicationMain {</pre><pre> <b>public</b> <b>static</b> <b>void</b> main(String[] args) {</pre><pre>&nbsp; Thread.setDefaultUncaughtExceptionHandler(<b>new</b> AppSpecificExceptionHandler());</pre><pre> }</pre><pre>}</pre>
<p>Swing异常处理实现
<p>许多人没有注意到现有的JOptionPanel类，该类中有许多的优美的弹出对话框的静态方法(showOptionDialog,showConfirmDialog,showInputDialog,和showMessageDialog)，这些方法接受的参数不仅仅是字符串。这些静态方法（也包括JOptionPanel构造函数）都是接受一个Object作为参数的的。下面是一个实现该类的核心代码：
<p><b>public</b> <b>class</b> ErrorDialog {
<p><b>public</b> ErrorDialog() {
<p><b>super</b>();
<p>}
<p><b>public</b> <b>static</b> <b>void</b> showQuickErrorDialog(JFrame parent, Exception e) {
<p><b>final</b> JTextArea textArea = <b>new</b> JTextArea();
<p>textArea.setFont(<b>new</b> Font("Sans-Serif", Font.<i>PLAIN</i>, 10));
<p>textArea.setEditable(<b>false</b>);
<p>StringWriter writer = <b>new</b> StringWriter();
<p>e.printStackTrace(<b>new</b> PrintWriter(writer));
<p>textArea.setText(writer.toString());
<p>JScrollPane scrollPane = <b>new</b> JScrollPane(textArea);
<p>scrollPane.setPreferredSize(<b>new</b> Dimension(350, 150));
<p>JOptionPane.<i>showMessageDialog</i>(parent, scrollPane,
<p>"An Error Has Occurred", JOptionPane.<i>ERROR_MESSAGE</i>);
<p>}
<p>}
<p>在程序中的一个例图如下：
<p><a href="http://www.blogjava.net/images/blogjava_net/qiyadeng/WindowsLiveWriter/Swing_9EDE/clip_image002_2.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="238" alt="clip_image002" src="http://www.blogjava.net/images/blogjava_net/qiyadeng/WindowsLiveWriter/Swing_9EDE/clip_image002_thumb.jpg" width="427" border="0"></a><img src ="http://www.blogjava.net/qiyadeng/aggbug/218302.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qiyadeng/" target="_blank">qiyadeng</a> 2008-07-29 11:18 <a href="http://www.blogjava.net/qiyadeng/archive/2008/07/29/218302.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>讨论Java异常处理的文章</title><link>http://www.blogjava.net/qiyadeng/archive/2008/07/29/218294.html</link><dc:creator>qiyadeng</dc:creator><author>qiyadeng</author><pubDate>Tue, 29 Jul 2008 03:08:00 GMT</pubDate><guid>http://www.blogjava.net/qiyadeng/archive/2008/07/29/218294.html</guid><wfw:comment>http://www.blogjava.net/qiyadeng/comments/218294.html</wfw:comment><comments>http://www.blogjava.net/qiyadeng/archive/2008/07/29/218294.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qiyadeng/comments/commentRss/218294.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qiyadeng/services/trackbacks/218294.html</trackback:ping><description><![CDATA[<h4><a href="http://today.java.net/pub/a/today/2003/12/04/exceptions.html" target="_blank">Three Rules for Effective Exception Handling</a></h4> <h4><a href="http://www.onjava.com/pub/a/onjava/2003/11/19/exceptions.html?page=1" target="_blank">Best Practices for Exception Handling</a></h4> <h3><a href="http://www.javaworld.com/jw-07-1998/jw-07-exceptions.html?page=1" target="_blank">Exceptions in Java</a></h3> <h3><a href="http://www.javaworld.com/jw-07-1998/jw-07-techniques.html" target="_blank">Designing with exceptions</a></h3> <h3><a href="http://www.javaworld.com/javaworld/jw-08-2001/jw-0803-exceptions.html" target="_blank">Exceptional practices, Part 1</a></h3> <h3><a href="http://www.javaworld.com/javaworld/javatips/jw-javatip134.html" target="_blank">When catching exceptions, don't cast your net too wide</a></h3> <h3><a href="http://www.javaworld.com/javaworld/javatips/jw-javatip91.html" target="_blank">Use nested exceptions in a multitiered environment</a></h3> <h3><a href="http://www.javaworld.com/javaworld/jw-10-2003/jw-1003-generics.html?" target="_blank">Beware the dangers of generic Exceptions</a></h3><img src ="http://www.blogjava.net/qiyadeng/aggbug/218294.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qiyadeng/" target="_blank">qiyadeng</a> 2008-07-29 11:08 <a href="http://www.blogjava.net/qiyadeng/archive/2008/07/29/218294.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用InputVerifier设计Swing校验包</title><link>http://www.blogjava.net/qiyadeng/archive/2008/07/27/217772.html</link><dc:creator>qiyadeng</dc:creator><author>qiyadeng</author><pubDate>Sun, 27 Jul 2008 02:43:00 GMT</pubDate><guid>http://www.blogjava.net/qiyadeng/archive/2008/07/27/217772.html</guid><wfw:comment>http://www.blogjava.net/qiyadeng/comments/217772.html</wfw:comment><comments>http://www.blogjava.net/qiyadeng/archive/2008/07/27/217772.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qiyadeng/comments/commentRss/217772.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qiyadeng/services/trackbacks/217772.html</trackback:ping><description><![CDATA[<p>使用InputVerifier设计Swing校验包  <p>尽管有许多针对Swing的校验框架，并且Swing中也有API InputVerifier用于数据校验，InputVerifier易于使用并且容易定制。本文将在InputVerifier的基础上构建一个可用的校验包，可以在其它的Swing应用之中。  <p>InputVerifier类在javax.swing包中。它有一个抽象方法，我们需要实现一个叫verify()的方法，这个方法接受一个JComponent作为参数，返回值为true或false。一旦我们实现了verify()方法，我们可以在JTextField中使用如下：  <p>JTextField text = new JTextField();  <p>Text.setInputVerifier(new MyVerifier());  <p>然而，InputVerifier本身并没有什么意思。它的作用是防止用户输入错误的信息在组件中，阻止用户把输入光标移动到其他组件上。这种方式令人感到厌烦并且用户不知道错误所在。InputVerifier并没有提供一些更好的功能，所以我们需要构建一个如下校验包：  <p>1. 如果数据不正确时，可以改变输入组件的背景颜色。  <p>2. 如果数据不正确时，可以弹出消息提示用户错误出在什么地方，应该怎么处理。  <p>3. 我们需要通知Form窗体每个组件的校验结果，这样的话Form窗体可以执行相应的动作。（例如启动”OK”按钮）  <p>4. 如果用户改正了组件的错误数据，则错误提示信息应消失。  <p>我们的包中包含一个抽象类，这个抽象类处理了大部分的工作，我们只需要实现一个方法，决定使用什么规则来进行数据校验；同时也提供一个接口，如果需要校验的Form窗体需要校验结果通知Form窗体，则可以实现该接口。好了，我们现在可以设计这个接口。  <p>WantsValidationStatus接口  <p>下面的接口可以提供一种方式用于出发Form窗体的制定事件。  <p><b>package</b> ica.swing.validation;  <p><b>public</b> <b>interface</b> WantsValidationStatus {  <p><b>void</b> validateFailed(); // Called when a component has failed validation.  <p><b>void</b> validatePassed(); // Called when a component has passed validation.  <p>}  <p>实现这个接口可以通知Form窗体校验状态，但是实现该接口不是必须的。我们也可以不是实现这个接口，如果校验失败不做任何事情。但是，我认为这样的设计是比较优美的。接下来看看我们的抽象类。  <p>AbstractValidator类  <p>AbstarctValidator处理了显示出错提示，改变出错背景，通知Form窗体等许多工作。只留下一个抽象的方法待实现，protected abstract Boolean validateCriteria(JComponent c),这个方法我们需要提供自己的校验规则用于校验组件。以下是抽象类：  <p><b>protected</b> <b>abstract</b> <b>boolean</b> validationCriteria(JComponent c);  <p><b>public</b> <b>boolean</b> verify(JComponent c) {  <p><b>if</b> (!validationCriteria(c)) {  <p>c.setBackground(Color.<i>PINK</i>);  <p>//messageLabel.setSize(0,0);  <p>//messageLabel.setBackground(color);  <p>point = c.getLocation();  <p><b>double</b> x =point.getX();  <p><b>double</b> y = point.getY();  <p>Point p = <b>new</b> Point();  <p>p.setLocation(x,y+c.getHeight());  <p>tooltip= <b>new</b> HalfOpaqueToolTip(  <p>message, <b>new</b> Color( 250 , 250 , 200 ), Color.<i>RED</i>, Color.<i>BLACK</i>, 1,dialog,p );  <p>c.addMouseListener(tooltip);  <p><b>return</b> <b>false</b>;  <p>}  <p>Verify()方法  <p>当需要校验是调用方法boolean verify(JComponent c)，下面用一例子示之。  <p><b>public</b> <b>class</b> ToolTipsEmptyValidator <b>extends</b> ToolTipsAbstractValidator {  <p><b>public</b> ToolTipsEmptyValidator(JDialog dialog, JTextField c, String message) {  <p><b>super</b>(dialog, c, message);  <p>}  <p><b>public</b> ToolTipsEmptyValidator(JFrame dialog, JTextField c, String message) {  <p><b>super</b>(dialog, c, message);  <p>}  <p><b>public</b> ToolTipsEmptyValidator(JDialog dialog, JTextArea c, String message) {  <p><b>super</b>(dialog, c, message);  <p>}  <p><b>public</b> ToolTipsEmptyValidator(JFrame dialog, JTextArea c, String message) {  <p><b>super</b>(dialog, c, message);  <p>}  <p>@Override  <p><b>protected</b> <b>boolean</b> validationCriteria(JComponent c) {  <p><b>if</b> (c <b>instanceof</b> JTextField){  <p><b>if</b> (((JTextField) c).getText().equals(""))  <p><b>return</b> <b>false</b>;  <p>}  <p><b>else</b> <b>if</b> (c <b>instanceof</b> JTextArea){  <p><b>if</b> (((JTextArea) c).getText().equals(""))  <p><b>return</b> <b>false</b>;  <p>}  <p><b>return</b> <b>true</b>;  <p>}  <p>}  <p>调用方法如下：  <p>ToolTipsEmptyValidator validator1 = <b>new</b> ToolTipsEmptyValidator(jDialog,localdbPanel.getIpAddressField(),"Error,IP Address can't be empty");  <p><b>boolean</b> flag1 = validator1.verify(localdbPanel.getIpAddressField());  <p>下图是使用该校验包的示例。  <p><a href="http://www.blogjava.net/images/blogjava_net/qiyadeng/WindowsLiveWriter/InputVerifierSwing_94B9/image_2.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="441" alt="image" src="http://www.blogjava.net/images/blogjava_net/qiyadeng/WindowsLiveWriter/InputVerifierSwing_94B9/image_thumb.png" width="556" border="0"></a></p><img src ="http://www.blogjava.net/qiyadeng/aggbug/217772.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qiyadeng/" target="_blank">qiyadeng</a> 2008-07-27 10:43 <a href="http://www.blogjava.net/qiyadeng/archive/2008/07/27/217772.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Swing设计向导</title><link>http://www.blogjava.net/qiyadeng/archive/2008/07/26/217677.html</link><dc:creator>qiyadeng</dc:creator><author>qiyadeng</author><pubDate>Sat, 26 Jul 2008 08:46:00 GMT</pubDate><guid>http://www.blogjava.net/qiyadeng/archive/2008/07/26/217677.html</guid><wfw:comment>http://www.blogjava.net/qiyadeng/comments/217677.html</wfw:comment><comments>http://www.blogjava.net/qiyadeng/archive/2008/07/26/217677.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qiyadeng/comments/commentRss/217677.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qiyadeng/services/trackbacks/217677.html</trackback:ping><description><![CDATA[<p>向导在今天的桌面应用中非常常用。向导应该是个什么样子呢？相信你应该很清楚，因为你使用过很多的向导。也许你使用过一些安装程序向导或是一些程序的配置向导。这篇文章，我们会创建一个简单的向导框架。  <p>一个向导包括很多Panel，每个Panel里面包含用户的配置组件或是文本域或是选择框等。用户点击”Next”或是”Back”按钮，在各个Panel之间切换，输入需要的信息。注意的是，当最后一个Panel是”Next”按钮要变成”Finish”按钮，并且再次按下的时候向导关闭。在向导关闭的时，发起向导的类要得到向导Panel中所有的数据。在任何情况下，用户可以点击”Cancel”按钮关闭向导并丢弃前面所填的所有数据。  <p>看上去很简单是吗？对的，但是有些设计细节我们需要考虑。  <p>第一，向导中的每个Panel不是都需要访问的，换句话说，如果向导包含1到5个Panel，点击”Next”按钮可以从第一个Panel依次到第五个Panel，但是有时候可能由于用户的选项直接从第一个Panel跳到第五个Panel. 而且还有的情况是，假设向导中需要连接到远程服务器或是远程数据库，如果连接不上的，那么就不能到达下一个Panel。这样向导中的Panel就像是树形，你从树的根开始，通过不同的分支到达叶子节点，这时”Next”按钮变成”Finish”按钮。  <p>第二，有些时候Next按钮和Back按钮需要禁用。比如，第一个Panel出现的时候，back按钮应该禁用，因为没有上一个Panel。另外，当有些值必须输入的时候，没有输入的情况下Panel中的Next按钮应该为禁用。  <p>第三，输入的数据需要一直保持到用户完成向导或是取消。因为当用户点击Back按钮会到上一个Panel时，上一个Panel填写的数据应该能够保持，并且再次使用Next按钮时，本Panel中的数据也应该保持。  <p>有了这些设计细节，我们可以考虑设计自己的向导了。我们先规划下我们将要完成的一些类。  <p>Wizard-这个类包含模型（model）和控制器（controller），其主要是一个对话框(JDialog)，并且包含有Next,Back和Cancel按钮。还有一个使用CardLayout布局管理的大组件，可以把各个Panel显示在上面。想下图的样子：  <p><a href="http://www.blogjava.net/images/blogjava_net/qiyadeng/WindowsLiveWriter/Swing_EB02/clip_image002_2.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="424" alt="clip_image002" src="http://www.blogjava.net/images/blogjava_net/qiyadeng/WindowsLiveWriter/Swing_EB02/clip_image002_thumb.jpg" width="558" border="0"></a>  <p>Java.awt.Componet的子类，这个类一般是继承了java.awt.Componet,通常是一个javax.swing.JPanel.这个类是用于显示在wizard类中的大组件位置。下图是其中一个Panel。  <p><a href="http://www.blogjava.net/images/blogjava_net/qiyadeng/WindowsLiveWriter/Swing_EB02/clip_image004_2.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="354" alt="clip_image004" src="http://www.blogjava.net/images/blogjava_net/qiyadeng/WindowsLiveWriter/Swing_EB02/clip_image004_thumb.jpg" width="539" border="0"></a>  <p>WizardPanelDescriptor-这第三个类用于关联wizard和panel。这个需要类用户继承，并用于标识Panel.这个类指定了访问下一个和前一个Panel的规则，并且在Panel的显示前，现实中，和显示后执行相应的动作。  <p>Wizard  <p>首先我们需要创建一个用于显示向导对话框本身，它包含有三个按钮Back,Next,Cancel.一般这些按钮是按照从左到右的顺序分布的，另外Cancel按钮要离其他的两个按钮远一点，这样防止用户不小心点击到Cancel按钮。接下来，就用需要一个布局，可以在同一个区域显示各个Panel，在AWT中有CardLayout布局。  <p>在这个设计中，我们使用一个简单的方法来检测我们的数据。下面我们看看Wizard类：  <p>Public Class Wizard{  <p><b>private</b> WizardModel wizardModel;  <p><b>private</b> WizardController wizardController;  <p><b>private</b> JDialog wizardDialog;  <p><b>private</b> JPanel cardPanel;  <p><b>private</b> CardLayout cardLayout;  <p><b>private</b> JButton backButton;  <p><b>private</b> JButton nextButton;  <p><b>private</b> JButton cancelButton;  <p><b>private</b> MainFrame mainFrame;  <p><b>private</b> <b>int</b> returnCode;  <p><b>public</b> Wizard(MainFrame owner) {  <p><b>this</b>.mainFrame = owner;  <p>wizardModel = <b>new</b> WizardModel();  <p>wizardDialog = <b>new</b> JDialog(owner);  <p>Point np = owner.getLocation();  <p>wizardDialog.setLocation(np);  <p>initComponents();  <p>}  <p>}  <p>注意到initComponents()方法，这个方法是用于布置界面中的组件和按钮的，并且把按钮事件关联到控制器中。  <p><b>private</b> <b>void</b> initComponents() {  <p>JPanel buttonPanel = <b>new</b> JPanel();  <p>Box buttonBox = <b>new</b> Box(BoxLayout.<i>X_AXIS</i>);  <p>cardPanel = <b>new</b> JPanel();  <p>cardPanel.setBorder(<b>new</b> EmptyBorder(<b>new</b> Insets(5, 10, 5, 10)));  <p>cardLayout = <b>new</b> CardLayout();  <p>cardPanel.setLayout(cardLayout);  <p>backButton = <b>new</b> JButton();  <p>nextButton = <b>new</b> JButton();  <p>cancelButton = <b>new</b> JButton();  <p>backButton.setActionCommand(<i>BACK_BUTTON_ACTION_COMMAND</i>);  <p>nextButton.setActionCommand(<i>NEXT_BUTTON_ACTION_COMMAND</i>);  <p>cancelButton.setActionCommand(<i>CANCEL_BUTTON_ACTION_COMMAND</i>);  <p>buttonPanel.setLayout(<b>new</b> BorderLayout());  <p>buttonPanel.add(separator, BorderLayout.<i>NORTH</i>);  <p>buttonBox.setBorder(<b>new</b> EmptyBorder(<b>new</b> Insets(5, 10, 5, 10)));  <p>buttonBox.add(backButton);  <p>buttonBox.add(Box.<i>createHorizontalStrut</i>(10));  <p>buttonBox.add(nextButton);  <p>buttonBox.add(Box.<i>createHorizontalStrut</i>(30));  <p>buttonBox.add(cancelButton);  <p>buttonPanel.add(buttonBox, java.awt.BorderLayout.<i>EAST</i>);  <p>wizardDialog.getContentPane().add(buttonPanel, java.awt.BorderLayout.<i>SOUTH</i>);  <p>wizardDialog.getContentPane().add(cardPanel, java.awt.BorderLayout.<i>CENTER</i>);  <p>}  <p>接下来，我们要把Componet Panel注册到Wizard中。Wzard中使用registerWizardPanel()方法。我们知道CardLayout布局中包含有next(),previous()这样的方法来回翻动Panel，然而我们需要的是树形结构，而不是线性的结构，因此我们需要使用标识符来标识各个Panel对象。  <p><b>public</b> <b>void</b> registerWizardPanel(Object id, WizardPanelDescriptor panel) {  <p>cardPanel.add(panel.getPanelComponent(), id);  <p>wizardMdel.registerPanel(id, panel);  <p>}  <p>最后wizard中是用setCurrentPanel(Object id)来设置，Wizard初始化时显示的第一个Panel。剩下的就是一些事件处理，比较简单。Wizard中大量的使用Wizard来保存数据，并使用WizardController来处理对话框本身的事件。  <p>WizardPanelDescriptor  <p>注册到Wizard的每个方法都需要继承WizardPanelDescriptor类，这个类包含一些方法可以把组件集成到Wizard向导中。以下的四个方法：是访问组件和组件对象标识符的方法。  <p><b>public</b> <b>final</b> <b>void</b> setPanelComponent(Component panel) {  <p>targetPanel = panel;  <p>}  <p><b>public</b> <b>final</b> Component getPanelComponent() {  <p><b>return</b> targetPanel;  <p>}  <p><b>public</b> <b>final</b> Object getPanelDescriptorIdentifier() {  <p><b>return</b> panelIdentifier;  <p>}  <p><b>public</b> <b>final</b> <b>void</b> setPanelDescriptorIdentifier(Object id) {  <p>panelIdentifier = id;  <p>}  <p>下面是比较重要的一部分，就是每个继承类都需要改写的一些方法。包括控制Next，Back之后显示的Panel。在每次Panel初始化的时候都会执行Next这个方法，当Next和Back方法中返回的是null之的时候Next和Back按钮被禁用。因此，Next方法不能用于数据的校验，需要有另外的方法，在这里使用了一个Validator方法，当然如果数据需要校验，也需要在WizardPanelDescriptor子类中进行覆盖。具体如下：  <p><b>public</b> Object getNextPanelDescriptor() {  <p><b>return</b> <b>null</b>;  <p>}  <p><b>public</b> Object getBackPanelDescriptor() {  <p><b>return</b> <b>null</b>;  <p>}  <p><b>public</b> <b>boolean</b> validator(){  <p><b>return</b> <b>true</b>;  <p>}  <p>另外提供三个方法，用于控制Panel显示前，显示中和显示后的事件。  <p><b>public</b> <b>void</b> aboutToDisplayPanel() {  <p>}  <p><b>public</b> <b>void</b> displayingPanel() {  <p>}  <p><b>public</b> <b>void</b> aboutToHidePanel() {  <p>}  <p><b>WizardPanelDescriptor</b>  <p><a href="http://www.blogjava.net/images/blogjava_net/qiyadeng/WindowsLiveWriter/Swing_EB02/clip_image007_2.gif"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="321" alt="clip_image007" src="http://www.blogjava.net/images/blogjava_net/qiyadeng/WindowsLiveWriter/Swing_EB02/clip_image007_thumb.gif" width="558" border="0"></a>  <p>最后，用上图来表示Wizard类和其他几个类之间的关系图，并展示了两个实例。</p><img src ="http://www.blogjava.net/qiyadeng/aggbug/217677.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qiyadeng/" target="_blank">qiyadeng</a> 2008-07-26 16:46 <a href="http://www.blogjava.net/qiyadeng/archive/2008/07/26/217677.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java实现的贝叶斯(Bayesian)分类器 ci-bayes 1.0发布</title><link>http://www.blogjava.net/qiyadeng/archive/2008/06/25/210459.html</link><dc:creator>qiyadeng</dc:creator><author>qiyadeng</author><pubDate>Wed, 25 Jun 2008 02:16:00 GMT</pubDate><guid>http://www.blogjava.net/qiyadeng/archive/2008/06/25/210459.html</guid><wfw:comment>http://www.blogjava.net/qiyadeng/comments/210459.html</wfw:comment><comments>http://www.blogjava.net/qiyadeng/archive/2008/06/25/210459.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/qiyadeng/comments/commentRss/210459.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qiyadeng/services/trackbacks/210459.html</trackback:ping><description><![CDATA[<p><a href="https://ci-bayes.dev.java.net/">ci-bayes</a>实现了两种贝叶斯分类方法：<a href="http://en.wikipedia.org/wiki/Naive_Bayes_classifier">a Navie implementation</a> 和 a Fisher implementation，是Toby segaran's 的书"Programming Collective Intelligence"的一部分的Java实现版本。</p> <p>简单的一个例子如下：</p><pre class="csharpcode">FisherClassifier fc=<span class="kwrd">new</span> FisherClassifierImpl();
fc.train(<span class="str">"The quick brown fox jumps over the lazy dog's tail"</span>,<span class="str">"good"</span>);
fc.train(<span class="str">"Make money fast!"</span>, <span class="str">"bad"</span>); 
String classification=fc.getClassification(<span class="str">"money"</span>); // should be <span class="str">"bad"</span></pre>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style><img src ="http://www.blogjava.net/qiyadeng/aggbug/210459.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qiyadeng/" target="_blank">qiyadeng</a> 2008-06-25 10:16 <a href="http://www.blogjava.net/qiyadeng/archive/2008/06/25/210459.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>太阳系行星和星座英文</title><link>http://www.blogjava.net/qiyadeng/archive/2008/05/31/204567.html</link><dc:creator>qiyadeng</dc:creator><author>qiyadeng</author><pubDate>Sat, 31 May 2008 04:12:00 GMT</pubDate><guid>http://www.blogjava.net/qiyadeng/archive/2008/05/31/204567.html</guid><wfw:comment>http://www.blogjava.net/qiyadeng/comments/204567.html</wfw:comment><comments>http://www.blogjava.net/qiyadeng/archive/2008/05/31/204567.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qiyadeng/comments/commentRss/204567.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qiyadeng/services/trackbacks/204567.html</trackback:ping><description><![CDATA[<p>水星（Mercury）<br>金星（Venus）<br>地球（Earth）<br>火星（Mars）<br>木星（Jupiter）<br>土星（Saturn）<br>天王星（Uranus）<br>海王星（Neptune）<br>冥王星（Pluto）  <p><a href="http://www.blogjava.net/images/blogjava_net/qiyadeng/WindowsLiveWriter/c962906edcb3_AAD9/planets_518_2.gif"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="643" alt="planets_518" src="http://www.blogjava.net/images/blogjava_net/qiyadeng/WindowsLiveWriter/c962906edcb3_AAD9/planets_518_thumb.gif" width="673" border="0"></a> </p> <p>Twelve Years of Animals（ 12生肖） <br>1.Year of the Rat 鼠年 <br>2.Year of the Ox 牛年 <br>3.Year of the Tiger 虎年 <br>4.Year of the Rabbit 兔年 <br>5.Year of the Dragon 龙年 <br>6.Year of the Snake 蛇年 <br>7.Year of the Horse 马年 <br>8.Year of the Goat 羊年 <br>9.Year of the Monkey 猴年 <br>10.Year of the Rooster 鸡年 <br>11.Year of the Dog 狗年 <br>12.Year of the Boar 猪年  <p>Twelve Constellations (12星座)： <br>1.Aquarius(the Water Carrier)水瓶座 <br>2.Pisces(the Fishes)双鱼座 <br>3.Aries(the Ram)白羊座 <br>4.Taurus(the Bull)金牛座 <br>5.Gemini(the Twins)双子座 <br>6.Cancer(the Crab)巨蟹座 <br>7.Leo(the Lion)狮子座 <br>8.Virgo(the Virgin)处女座 <br>9.Libra(the Scales)天秤座 <br>10.Scorpio(the Scorpion)天蝎座 <br>11.Sagittarius(the Archer)射手座 <br>12.Capricorn(the Goat)山羊座  <img src ="http://www.blogjava.net/qiyadeng/aggbug/204567.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qiyadeng/" target="_blank">qiyadeng</a> 2008-05-31 12:12 <a href="http://www.blogjava.net/qiyadeng/archive/2008/05/31/204567.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>