﻿<?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-Java图形界面设计</title><link>http://gui.blogjava.net/</link><description>专注于Swing JavaFX图形设计技术</description><language>zh-cn</language><lastBuildDate>Wed, 20 May 2026 06:58:12 GMT</lastBuildDate><pubDate>Wed, 20 May 2026 06:58:12 GMT</pubDate><ttl>60</ttl><item><title>神娃(ANDROID IOS)</title><link>http://www.blogjava.net/chensiyu04/articles/432327.html</link><dc:creator>相信</dc:creator><author>相信</author><pubDate>Tue, 21 Feb 2017 02:44:00 GMT</pubDate><guid>http://www.blogjava.net/chensiyu04/articles/432327.html</guid><description><![CDATA[<div align="center"><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/ceac2051-43fb-4323-8af6-d0de46fd49ae.png" alt="" border="0" /></div>
<div align="center">(v1.0.0)<br />
<br />
<div align="left">神娃是有几个新爸爸和新妈妈等联合组成的一个团队而开发的一款游戏幼儿早教游戏。初衷已为自己的孩子进行早期幼儿教育。提高记忆力，特别是手机号码记忆。能让孩子对父母的联系方式进行深度记忆。方便任何突然事件都可联系到父母。 <br />
<br />
1:手机记忆：主要目的是希望孩子 记住家人的电话号码（大人可自己设置电话号码）。按键有数字音效提示。更方便宝宝记忆。 <br />
2:水果识别：包含拼音及音标，以及人工发音，并且让孩子认识些基本水果。 <br />
3:颜色识别：主要对早期幼儿的颜色感官等进行早起教育，采用拼图对接的模式，以及随机性，提高孩子对颜色的基本认识。 <br />
4:数字识别：对物品的个数 进行认识。 采用拼图对接。随机性。提高孩子对数字的早期认识。 <br />
5:更多玩法、持续开发。 <br />
<br />
特别注意： <br />
1:该游戏不需任何费用。无任何广告。 <br />
2:该游戏属单机游戏。不会产生任何流量。 <br />
3:该游只需一个网络访问权限，无需额外手机权限。 <br />
4:违反以上1,2,3点。该游戏不是原版。请拒绝安装。 <br />
<br />
该游戏送给 &#8220;cheney即将到来的侄女or侄子、涵仔的宝贝女儿、B哥即将到来的宝贝儿子or女儿、想想的宝贝儿子、菜菜的宝贝美女、等等更多小天使们。&#8221; <br />
<br />
如有雷同，纯属巧合。如有侵权，或 好想法 请联系 103594501@qq.com 特此敬上。<br />
<br />
游戏截图：<br /><br /><div align="center"><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/sw11.png" alt="" border="0" height="480" width="854" /></div><br /><div align="center"><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/sw22.png" alt="" border="0" height="480" width="854" /></div><br /><div align="center"><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/sw33.png" alt="" border="0" height="480" width="854" /></div><br /><div align="center"><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/sw44.png" alt="" border="0" height="480" width="854" /></div><br /><div align="center"><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/sw55.png" alt="" border="0" height="480" width="854" /></div><br />
</div>
</div><img src ="http://gui.blogjava.net/aggbug/432327.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chensiyu04/" target="_blank">相信</a> 2017-02-21 10:44 <a href="http://www.blogjava.net/chensiyu04/articles/432327.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>维京海盗(ANDROID IOS)</title><link>http://www.blogjava.net/chensiyu04/articles/432326.html</link><dc:creator>相信</dc:creator><author>相信</author><pubDate>Tue, 21 Feb 2017 02:20:00 GMT</pubDate><guid>http://www.blogjava.net/chensiyu04/articles/432326.html</guid><description><![CDATA[<div align="center"><span style="font-family: Arial;">
</span><div align="center"><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/03ee2740554df4f6411fe36cc9bb961cdc75cac8e.png" alt="" border="0" /></div>
</div>
<div align="center"><span style="font-family: Arial;">&nbsp;(v1.0.0)</span></div><span style="font-family: Arial;">

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 剧情介绍：</span><br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<div><span style="font-family: Arial;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 愤怒的冰巨人袭击我们和平安宁的岛屿。所有村民都被冻结。我们不会袖手旁观！ </span><br /><span style="font-family: Arial;">
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 派出你的部队，解救被囚禁的海盗同志们。 </span><br /><span style="font-family: Arial;">
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 这是一个独特的战略游戏！升级你的海盗团队，以及你的岛屿，组建强大的部队，击败了冰巨人的。完成史诗般的战斗！</span><br />
<br />
<br /><span style="font-family: Arial;">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 游戏截图：</span><br />
<br />
<div align="center"><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/wjhd1.png" alt="" height="480" border="0" width="800" /></div>
<br />
<div align="center"><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/wjhd2.png" alt="" height="480" border="0" width="800" /><br />
<img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/wjhd3.png" alt="" height="480" border="0" width="800" /><br />
<img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/wjhd4.png" alt="" height="480" border="0" width="800" /><br />
<img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/wjhd5.png" alt="" height="480" border="0" width="800" /><br />
</div>
<br />
</div><img src ="http://gui.blogjava.net/aggbug/432326.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chensiyu04/" target="_blank">相信</a> 2017-02-21 10:20 <a href="http://www.blogjava.net/chensiyu04/articles/432326.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ResizeShape 可拖拽旋转的 Rectangle</title><link>http://www.blogjava.net/chensiyu04/articles/371411.html</link><dc:creator>相信</dc:creator><author>相信</author><pubDate>Wed, 07 Mar 2012 08:05:00 GMT</pubDate><guid>http://www.blogjava.net/chensiyu04/articles/371411.html</guid><description><![CDATA[<img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/resize1.jpg" border="0" alt="" width="500" height="300" /><br /><br /><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/resize2.jpg" border="0" alt="" width="500" height="300" /><br /><br /><br />黑！！黑！！！源代码在这里！！<br /><div>期待评论。。。共同探讨程序人生。。</div><br /><a href="/Files/chensiyu04/ResizableComponent.rar">/Files/chensiyu04/ResizableComponent.rar</a><img src ="http://gui.blogjava.net/aggbug/371411.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chensiyu04/" target="_blank">相信</a> 2012-03-07 16:05 <a href="http://www.blogjava.net/chensiyu04/articles/371411.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Swing不丑系列: What's this??  JPhone!!</title><link>http://www.blogjava.net/chensiyu04/articles/jphone.html</link><dc:creator>相信</dc:creator><author>相信</author><pubDate>Thu, 22 Sep 2011 12:48:00 GMT</pubDate><guid>http://www.blogjava.net/chensiyu04/articles/jphone.html</guid><description><![CDATA[下班后 将强大的身躯 挤入那囊肿的上海地铁9号线上...左看看.. IPhone.右看看.. IPhone .然后掏出自己的碎屏的金立手机..我沉默了....<br />
<br />
What's this????????? my Java Swing ... JPhone!!!!&nbsp;<br /><br /><div><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; "><span style="color: #808080; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">|----------------------------------------------------------------------------------------|<br /></span><span style="color: #808080; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;版权声明&nbsp; 版权所有 @chensiyu<br /></span><span style="color: #808080; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 引用请注明来源&nbsp;<div style="display: inline-block; "><div><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: 19px; color: #808080; ">www.blogjava.net/chensiyu04</span></div></div><br /><div><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: 19px; color: #808080; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 本文由 &nbsp;陈思羽 于 2011年9月22号 出品..</span></div></span><span style="color: #808080; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">|----------------------------------------------------------------------------------------|<br /><br /></span></span></div>

<img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/JPhone1.PNG" alt="" /><br /><br /><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/JPhone2.PNG" width="1001" height="700" alt="" /><br /><br /><br /><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/JPhone3.PNG" width="1003" height="700" alt="" /><img src ="http://gui.blogjava.net/aggbug/359289.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chensiyu04/" target="_blank">相信</a> 2011-09-22 20:48 <a href="http://www.blogjava.net/chensiyu04/articles/jphone.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Swing自定义组件: SwitchButton</title><link>http://www.blogjava.net/chensiyu04/articles/switchbutton.html</link><dc:creator>相信</dc:creator><author>相信</author><pubDate>Fri, 02 Sep 2011 07:33:00 GMT</pubDate><guid>http://www.blogjava.net/chensiyu04/articles/switchbutton.html</guid><description><![CDATA[最近跟JList走的比较近.听说她最近离婚了..唉...可惜啊.可惜.<br />听JList说 是因为她脾气比较暴躁..不知道什么时候 该开 什么时候该关.<br />说实话..我很喜欢替美女解决烦恼,特别像JList这么漂亮又乖巧得..<br />那么.咱们来用一个开关..也许能起到些作用....<br /><br />当然.不会让滑块瞬间转移,而是优美得滑过去..这样才配的上美丽的JList.<br /><br /><div><span style="color: #808080; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">|----------------------------------------------------------------------------------------|<br /></span><span style="color: #808080; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;版权声明&nbsp; 版权所有 @chensiyu<br /></span><span style="color: #808080; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 引用请注明来源&nbsp;<div style="display: inline-block; "><div><meta http-equiv="content-type" content="text/html; charset=utf-8" /><span class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: 19px; color: #808080; ">www.blogjava.net/chensiyu04</span></div></div><br /><div><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: 19px; color: #808080; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 本文由 &nbsp;陈思羽 于 2011年9月2号 出品..</span></div></span><span style="color: #808080; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">|----------------------------------------------------------------------------------------|</span></div><br /><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/Screenshot-SwitchButtonDemo.png" width="243" height="85" alt="" /><br /><br /><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/Screenshot-SwitchButtonDemo-1.png" width="243" height="85" alt="" /><br /><br />目前还不太完美..有时间在整下.<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;swing;<br /><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.awt.BorderLayout;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.awt.Color;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.awt.Dimension;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.awt.GradientPaint;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.awt.Graphics;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.awt.Graphics2D;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.awt.Paint;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.awt.RenderingHints;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.awt.Shape;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.awt.event.ActionEvent;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.awt.event.ActionListener;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.awt.geom.RoundRectangle2D;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;javax.swing.JFrame;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;javax.swing.JLabel;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;javax.swing.JPanel;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;javax.swing.JToggleButton;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;javax.swing.SwingUtilities;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;javax.swing.Timer;<br /><br /></span><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*<br />&nbsp;*&nbsp;</span><span style="color: #808080; ">@author</span><span style="color: #008000; ">&nbsp;chensiyu<br />&nbsp;*&nbsp;@createDate&nbsp;2011/9/2<br />&nbsp;*&nbsp;@address&nbsp;www.blogjava.net/chensiyu04<br />&nbsp;*&nbsp;<br />&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;SwitchButton&nbsp;</span><span style="color: #0000FF; ">extends</span><span style="color: #000000; ">&nbsp;JToggleButton&nbsp;</span><span style="color: #0000FF; ">implements</span><span style="color: #000000; ">&nbsp;ActionListener&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">final</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;ARCNUMBER&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">35</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;currentResolution&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">50</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;cycleStart;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;Timer&nbsp;timer&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">final</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;MOVE_TIME&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2000</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;moveMinX;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;moveMaxX;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;buttonX;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;ActionListener&nbsp;moveActionListener&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;ActionListener()&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;actionPerformed(ActionEvent&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;startTimer(currentResolution);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;};<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;SwitchButton()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setBorder(</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addActionListener(moveActionListener);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">protected</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;paintComponent(Graphics&nbsp;g)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">super</span><span style="color: #000000; ">.paintComponent(g);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Graphics2D&nbsp;g2&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(Graphics2D)&nbsp;g;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color&nbsp;oldColor&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;g2.getColor();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g2.setColor(Color.WHITE);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g2.fillRect(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;getWidth(),&nbsp;getHeight());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g2.setColor(oldColor);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RenderingHints.VALUE_ANTIALIAS_ON);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Shape&nbsp;backgroundShape&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;RoundRectangle2D.Float(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;getWidth()&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">,&nbsp;getHeight()&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">,&nbsp;ARCNUMBER,&nbsp;ARCNUMBER);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;selected&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;getModel().isSelected();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">fill&nbsp;shape</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Paint&nbsp;paint&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(selected)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;paint&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;GradientPaint(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Color(</span><span style="color: #000000; ">45</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">106</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">169</span><span style="color: #000000; ">),&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;getHeight(),&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Color(</span><span style="color: #000000; ">135</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">183</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">245</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;paint&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;GradientPaint(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Color(</span><span style="color: #000000; ">144</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">144</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">144</span><span style="color: #000000; ">),&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;getHeight(),&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Color(</span><span style="color: #000000; ">244</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">244</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">244</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g2.setPaint(paint);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g2.fill(backgroundShape);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">draw&nbsp;shape&nbsp;bounds</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g2.setColor(Color.DARK_GRAY);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g2.draw(backgroundShape);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JLabel&nbsp;onLabel&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;JLabel(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">ON</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JLabel&nbsp;offLabel&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;JLabel(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">OFF</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dimension&nbsp;labelSize;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">draw&nbsp;text.&nbsp;&nbsp;off/on</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(selected)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oldColor&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;g2.getColor();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g2.setColor(Color.WHITE);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;labelSize&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;onLabel.getPreferredSize();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g2.drawString(onLabel.getText(),&nbsp;getWidth()&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;labelSize.width&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">,&nbsp;getHeight()&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;labelSize.height&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g2.setColor(oldColor);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oldColor&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;g2.getColor();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g2.setColor(Color.BLACK);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;labelSize&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;offLabel.getPreferredSize();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g2.drawString(offLabel.getText(),&nbsp;getWidth()&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;labelSize.width&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">,&nbsp;getHeight()&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;labelSize.height&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g2.setColor(oldColor);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">draw&nbsp;button</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;buttonY&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;buttonWidth&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;getWidth()&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;buttonHeight&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;getHeight();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Shape&nbsp;buttonShape&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;RoundRectangle2D.Float(buttonX,&nbsp;buttonY,&nbsp;buttonWidth,&nbsp;buttonHeight,&nbsp;ARCNUMBER,&nbsp;ARCNUMBER);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;paint&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;GradientPaint(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Color(</span><span style="color: #000000; ">244</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">244</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">244</span><span style="color: #000000; ">),&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;getHeight(),&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Color(</span><span style="color: #000000; ">144</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">144</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">144</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g2.setPaint(paint);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g2.fill(buttonShape);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g2.setColor(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Color(</span><span style="color: #000000; ">140</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">140</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">140</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g2.draw(buttonShape);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SwitchButton&nbsp;button&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;SwitchButton();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;button.setBounds(</span><span style="color: #000000; ">60</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">10</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">100</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">30</span><span style="color: #000000; ">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JPanel&nbsp;mainPane&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;JPanel();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mainPane.setOpaque(</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mainPane.setBackground(Color.WHITE);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mainPane.setLayout(</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mainPane.add(button);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">final</span><span style="color: #000000; ">&nbsp;JFrame&nbsp;frame&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;JFrame();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.setTitle(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">SwitchButton&nbsp;Demo</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.setLayout(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;BorderLayout());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.getContentPane().add(mainPane,&nbsp;BorderLayout.CENTER);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.setSize(</span><span style="color: #000000; ">233</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">80</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.setLocationRelativeTo(</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SwingUtilities.invokeLater(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Runnable()&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;run()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.setVisible(</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;actionPerformed(ActionEvent&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;currentTime&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;System.nanoTime()&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1000000</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;totalTime&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;currentTime&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;cycleStart;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(totalTime&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;MOVE_TIME)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cycleStart&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;currentTime;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">float</span><span style="color: #000000; ">&nbsp;fraction&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">float</span><span style="color: #000000; ">)&nbsp;totalTime&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">&nbsp;MOVE_TIME;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fraction&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Math.min(</span><span style="color: #000000; ">1.0f</span><span style="color: #000000; ">,&nbsp;fraction);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fraction&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;Math.abs(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;fraction));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;animate(fraction);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;animate(</span><span style="color: #0000FF; ">float</span><span style="color: #000000; ">&nbsp;fraction)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">float</span><span style="color: #000000; ">&nbsp;animationFactor&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">float</span><span style="color: #000000; ">)&nbsp;Math.sin(fraction&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">float</span><span style="color: #000000; ">)&nbsp;Math.PI&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;animationFactor&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Math.min(animationFactor,&nbsp;</span><span style="color: #000000; ">1.0f</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;animationFactor&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Math.max(animationFactor,&nbsp;</span><span style="color: #000000; ">0.0f</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buttonX&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;moveMinX&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">)&nbsp;(.5f&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;animationFactor&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">float</span><span style="color: #000000; ">)&nbsp;(moveMaxX&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;moveMinX));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(isSelected())&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(buttonX&nbsp;</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">&nbsp;moveMaxX)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer.stop();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer.setInitialDelay(</span><span style="color: #000000; ">100</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buttonX&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;getWidth()&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(buttonX&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;moveMaxX)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer.stop();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer.setInitialDelay(</span><span style="color: #000000; ">100</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buttonX&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;repaint();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;startTimer(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;resolution)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(timer&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Timer(resolution,&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">timer.isRunning())&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(isSelected())&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveMinX&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveMaxX&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;getWidth()&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveMinX&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;getWidth()&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveMaxX&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer.start();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span></div><img src ="http://gui.blogjava.net/aggbug/357827.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chensiyu04/" target="_blank">相信</a> 2011-09-02 15:33 <a href="http://www.blogjava.net/chensiyu04/articles/switchbutton.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Swing不丑系列:ScrollPane</title><link>http://www.blogjava.net/chensiyu04/articles/scrollbar.html</link><dc:creator>相信</dc:creator><author>相信</author><pubDate>Thu, 25 Aug 2011 08:35:00 GMT</pubDate><guid>http://www.blogjava.net/chensiyu04/articles/scrollbar.html</guid><description><![CDATA[<div><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; color: #000000; ">今天上班的路上碰到JScrollPane 他非常愤怒,吹着胡子问我:喂!什么时候才能轮到我??我已经平淡很久了.<br />其实不能怪我..他是一个麻烦的家伙..相对于JButton JComboBox等一些简单组件来说.<br /><br /></span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; color: #000000; ">但看在<div style="display: inline-block; "><div><meta http-equiv="content-type" content="text/html; charset=utf-8" />JScrollPane</div></div>&nbsp;默默的为Swing滚动的份上..尝试让他从我手里,成为一个帅哥.<br /></span><br /><font class="Apple-style-span" face="Verdana, Geneva, Arial, Helvetica, sans-serif"><div><span style="font-size: 13px; line-height: 19px; "><span style="color: #808080; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">|----------------------------------------------------------------------------------------|<br /></span><span style="color: #808080; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;版权声明&nbsp; 版权所有 @chensiyu<br /></span><span style="color: #808080; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 引用请注明来源&nbsp;<div style="display: inline-block; "><div><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: 19px; color: #808080; ">www.blogjava.net/chensiyu04</span></div></div><br /><div><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: 19px; color: #808080; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 本文由 &nbsp;陈思羽 于 2011年8月24号 出品..</span></div></span><span style="color: #808080; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">|----------------------------------------------------------------------------------------|<br /></span></span></div></font><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; color: #000000; "><div><span style="color: #ff0000; "><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/Screenshot-ScrollBarDemo.png" width="396" height="198" alt="" /></span></div></span><div><span style="color: #000000; "><br /><div><div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">想要做好组件 心一定要细, 例如ScrpllPane得右下角Component 都要对着渐变一下.<br />但一定要首先判断 用户是否设置了右下角Component&nbsp;<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(scrollPane.getCorner(ScrollPaneConstants.LOWER_RIGHT_CORNER)&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Component&nbsp;component&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;JLabel(</span><span style="color: #000000; ">""</span><span style="color: #000000; ">)&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">protected</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;paintComponent(Graphics&nbsp;g)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Graphics2D&nbsp;g2&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(Graphics2D)&nbsp;g;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Paint&nbsp;oldPaint&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;g2.getPaint();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rectangle&nbsp;bounds&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;getBounds();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Paint&nbsp;backgroupRectPaint&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;GradientPaint(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Color(</span><span style="color: #000000; ">216</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">216</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">216</span><span style="color: #000000; ">),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bounds.width,&nbsp;bounds.height,&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Color(</span><span style="color: #000000; ">152</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">152</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">152</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g2.setPaint(backgroupRectPaint);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g2.fillRect(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;bounds.width,&nbsp;bounds.height);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g2.setPaint(oldPaint);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scrollPane.setCorner(ScrollPaneConstants.LOWER_RIGHT_CORNER,&nbsp;component);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div><br />在代码里附带了中文注释.详细可以下载代码看,<br /><br />下载地址:<a title="ScrollBarDemo" href="/Files/chensiyu04/IScrollBarDemo.zip">ScrollBarDemo</a><a></a></div></div></div></span></div><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; color: #000000; "></span></div><img src ="http://gui.blogjava.net/aggbug/357285.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chensiyu04/" target="_blank">相信</a> 2011-08-25 16:35 <a href="http://www.blogjava.net/chensiyu04/articles/scrollbar.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Swing自定义组件: JCheckTree</title><link>http://www.blogjava.net/chensiyu04/articles/checktree.html</link><dc:creator>相信</dc:creator><author>相信</author><pubDate>Wed, 24 Aug 2011 10:08:00 GMT</pubDate><guid>http://www.blogjava.net/chensiyu04/articles/checktree.html</guid><description><![CDATA[今天有一美女..说想要带JCheckBox的JTree.其实想一想..没什么不好实现的.<br />一个Renderer 一个Listener 应该可以搞定.. 自定义组件..关键就在交互事件上..<br /><div><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "><span style="color: #808080; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">|----------------------------------------------------------------------------------------|<br /></span><span style="color: #808080; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;版权声明&nbsp; 版权所有 @chensiyu<br /></span><span style="color: #808080; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 引用请注明来源&nbsp;<div style="display: inline-block; "><div><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: 19px; color: #808080; ">www.blogjava.net/chensiyu04</span></div></div><br /><div><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: 19px; color: #808080; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 本文由 &nbsp;陈思羽 于 2011年8月24号 出品..</span></div></span><span style="color: #808080; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">|----------------------------------------------------------------------------------------|</span></span></div><br /><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/Screenshot-CheckTree.png" width="210" height="405" alt="" /><br /><br />4个类.分别为:CheckTreeDemo,CheckTree,Node,CheckRenderer,CheckListener<br /><br />从类名可以看出来. CheckTreeDemo是JFrame类 CheckTree是组件,Node是数据模型,CheckRenderer是CheckTree得渲染,CheckListener是CheckTree的事件<br /><br /><br /><div style="background-color: #eeeeee; font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span>&nbsp;tree;<br /><font class="Apple-style-span" color="#0000ff"><br /></font><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.awt.BorderLayout;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;javax.swing.JFrame;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;javax.swing.JPanel;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;javax.swing.SwingUtilities;<br /><br /></span><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*<br />&nbsp;*&nbsp;</span><span style="color: #808080; ">@author</span><span style="color: #008000; ">&nbsp;chensiyu<br />&nbsp;*&nbsp;@createDate&nbsp;2011/8/24<br />&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;CheckTreeDemo&nbsp;</span><span style="color: #0000FF; ">extends</span><span style="color: #000000; ">&nbsp;JPanel&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;CheckTree&nbsp;checkTree;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;CheckTreeDemo()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;init(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setLayout(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;BorderLayout());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Node&nbsp;rootNode&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Node(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Root</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Node&nbsp;[]nodes&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Node[</span><span style="color: #000000; ">10</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">nodes.length;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Node&nbsp;node&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Node(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Node-</span><span style="color: #000000; ">"</span><span style="color: #000000; ">+</span><span style="color: #000000; ">i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rootNode.add(node);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkTree&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;CheckTree(rootNode);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(checkTree,BorderLayout.CENTER);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">final</span><span style="color: #000000; ">&nbsp;JFrame&nbsp;frame&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;JFrame();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.setTitle(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">CheckTree</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.setLayout(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;BorderLayout());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.setSize(</span><span style="color: #000000; ">200</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">400</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.getContentPane().add(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;CheckTreeDemo());</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SwingUtilities.invokeLater(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Runnable()&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;run()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.setVisible(</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span></div><br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;tree;<br /><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;javax.swing.JTree;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;javax.swing.tree.TreeNode;<br /><br /></span><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*<br />&nbsp;*&nbsp;</span><span style="color: #808080; ">@author</span><span style="color: #008000; ">&nbsp;chensiyu<br />&nbsp;*&nbsp;@createDate&nbsp;2011/8/24<br />&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;CheckTree&nbsp;</span><span style="color: #0000FF; ">extends</span><span style="color: #000000; ">&nbsp;JTree&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;CheckRenderer&nbsp;checkRenderer;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;CheckListener&nbsp;checkListener;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;CheckTree()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;CheckTree(TreeNode&nbsp;node)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">super</span><span style="color: #000000; ">(node);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;init()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkRenderer&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;CheckRenderer();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkListener&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;CheckListener();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setCellRenderer(checkRenderer);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addMouseListener(checkListener);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span></div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;tree;<br /><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;javax.swing.tree.DefaultMutableTreeNode;<br /><br /></span><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*<br />&nbsp;*&nbsp;</span><span style="color: #808080; ">@author</span><span style="color: #008000; ">&nbsp;chensiyu<br />&nbsp;*&nbsp;@createDate&nbsp;2011/8/24<br />&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;Node&nbsp;</span><span style="color: #0000FF; ">extends</span><span style="color: #000000; ">&nbsp;DefaultMutableTreeNode{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;String&nbsp;name&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">""</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;selected&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;Node(String&nbsp;name){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">super</span><span style="color: #000000; ">(name);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setName(name);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;String&nbsp;getName()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setName(String&nbsp;name)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.name&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;isSelected()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;selected;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setSelected(</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;selected)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.selected&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;selected;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span></div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;tree;<br /><br /></span><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*<br />&nbsp;*&nbsp;</span><span style="color: #808080; ">@author</span><span style="color: #008000; ">&nbsp;chensiyu<br />&nbsp;*&nbsp;@createDate&nbsp;2011/8/24<br />&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.awt.</span><span style="color: #000000; ">*</span><span style="color: #000000; ">;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;javax.swing.</span><span style="color: #000000; ">*</span><span style="color: #000000; ">;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;javax.swing.tree.</span><span style="color: #000000; ">*</span><span style="color: #000000; ">;<br /><br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;CheckRenderer&nbsp;</span><span style="color: #0000FF; ">extends</span><span style="color: #000000; ">&nbsp;JPanel&nbsp;</span><span style="color: #0000FF; ">implements</span><span style="color: #000000; ">&nbsp;TreeCellRenderer&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">protected</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;JCheckBox&nbsp;check;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">protected</span><span style="color: #000000; ">&nbsp;JLabel&nbsp;label;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;Rectangle&nbsp;checkBounds;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;CheckRenderer()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setLayout(</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(check&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;JCheckBox());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(label&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;JLabel(</span><span style="color: #000000; ">""</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check.setBackground(UIManager.getColor(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Tree.textBackground</span><span style="color: #000000; ">"</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label.setForeground(UIManager.getColor(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Tree.textForeground</span><span style="color: #000000; ">"</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;Component&nbsp;getTreeCellRendererComponent(JTree&nbsp;tree,&nbsp;Object&nbsp;value,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;isSelected,&nbsp;</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;expanded,&nbsp;</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;leaf,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;row,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;hasFocus)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;stringValue&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;tree.convertValueToText(value,&nbsp;isSelected,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;expanded,&nbsp;leaf,&nbsp;row,&nbsp;hasFocus);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setEnabled(tree.isEnabled());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label.setFont(tree.getFont());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label.setText(stringValue);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setBackground(tree.getBackground());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setForeground(tree.getForeground());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(value&nbsp;</span><span style="color: #0000FF; ">instanceof</span><span style="color: #000000; ">&nbsp;Node){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Node&nbsp;node&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(Node)value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check.setSelected(node.isSelected());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;Dimension&nbsp;getPreferredSize()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dimension&nbsp;d_check&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;check.getPreferredSize();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dimension&nbsp;d_label&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;label.getPreferredSize();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Dimension(d_check.width&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;d_label.width,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(d_check.height&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;d_label.height&nbsp;</span><span style="color: #000000; ">?</span><span style="color: #000000; ">&nbsp;d_label.height<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;d_check.height));<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;doLayout()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dimension&nbsp;d_check&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;check.getPreferredSize();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dimension&nbsp;d_label&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;label.getPreferredSize();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;y_check&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;y_label&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(d_check.height&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;d_label.height)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y_check&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(d_label.height&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;d_check.height)&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y_label&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(d_check.height&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;d_label.height)&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check.setLocation(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;y_check);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check.setBounds(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;y_check,&nbsp;d_check.width,&nbsp;d_check.height);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label.setLocation(d_check.width,&nbsp;y_label);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label.setBounds(d_check.width,&nbsp;y_label,&nbsp;d_label.width,&nbsp;d_label.height);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(checkBounds&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkBounds&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;check.getBounds();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;Rectangle&nbsp;getCheckBoxRectangle()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;checkBounds&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Rectangle(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;(Rectangle)&nbsp;checkBounds.clone();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span></div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;tree;<br /><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.awt.Point;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.awt.Rectangle;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.awt.event.MouseAdapter;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.awt.event.MouseEvent;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;javax.swing.JTree;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;javax.swing.tree.TreePath;<br /><br /></span><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*<br />&nbsp;*&nbsp;</span><span style="color: #808080; ">@author</span><span style="color: #008000; ">&nbsp;chensiyu<br />&nbsp;*&nbsp;@createDate&nbsp;2011/8/24<br />&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;CheckListener&nbsp;</span><span style="color: #0000FF; ">extends</span><span style="color: #000000; ">&nbsp;MouseAdapter&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;CheckListener()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;mouseClicked(MouseEvent&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JTree&nbsp;tree&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(JTree)&nbsp;e.getSource();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Point&nbsp;p&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;e.getPoint();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;x&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;e.getX();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;y&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;e.getY();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;row&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;tree.getRowForLocation(x,&nbsp;y);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TreePath&nbsp;path&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;tree.getPathForRow(row);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;path)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;component&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;path.getLastPathComponent();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;component)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(component&nbsp;</span><span style="color: #0000FF; ">instanceof</span><span style="color: #000000; ">&nbsp;Node)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rectangle&nbsp;chRect&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;CheckRenderer.getCheckBoxRectangle();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rectangle&nbsp;rowRect&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;tree.getPathBounds(path);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chRect.setLocation(chRect.x&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;rowRect.x,&nbsp;chRect.y&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;rowRect.y);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(e.getClickCount()&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;chRect.contains(p))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Node&nbsp;node&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(Node)component;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node.setSelected(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">node.isSelected());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tree.repaint();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</span></div><img src ="http://gui.blogjava.net/aggbug/357209.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chensiyu04/" target="_blank">相信</a> 2011-08-24 18:08 <a href="http://www.blogjava.net/chensiyu04/articles/checktree.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Swing不丑系列: ChoiceBox</title><link>http://www.blogjava.net/chensiyu04/articles/ichoicebox.html</link><dc:creator>相信</dc:creator><author>相信</author><pubDate>Wed, 24 Aug 2011 05:59:00 GMT</pubDate><guid>http://www.blogjava.net/chensiyu04/articles/ichoicebox.html</guid><description><![CDATA[本文由 &nbsp;陈思羽 于 2011年8月24号 出品..<br /><br />由于此组件是个人开发。<br />所以转载请注明出自:www.blogjava.net/chensiyu04<br /><br /><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/Screenshot-ChoiceBox.png" width="396" height="298" alt="" /><br /><br />这个组件第一次见到它时 是在JavaFX2.0 上。。不知道JavaFX2.0将来如何..但不得不承认得是..UI好看..<br />具体JavaFX将来怎么样..看看在说..<br /><br />我们来讨论这个组件.其实很简单.<br />首先..他是个合体.由JButton 和 JPopupMenu 组合而成.<br />我们将在JButton得action事件里这么写.<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">addActionListener(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;ActionListener()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;actionPerformed(ActionEvent&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rectangle&nbsp;rect&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;IChoiceBox.</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.getBounds();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menu.show(IChoiceBox.</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;rect.height);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});</span></div><br />将Menu show出去.<br /><br />剩下得就是继承重绘&nbsp;BasicMenuItemUI 以及 重写 JPopupMenu 得paintComponent<br />具体逻辑就要自己写了... 由于代码里牵连自己得业务比较多..暂时不好开源..<br />过段时间在开放..<img src ="http://gui.blogjava.net/aggbug/357187.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chensiyu04/" target="_blank">相信</a> 2011-08-24 13:59 <a href="http://www.blogjava.net/chensiyu04/articles/ichoicebox.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java2D 想起了小时候"火柴积木"</title><link>http://www.blogjava.net/chensiyu04/articles/356964.html</link><dc:creator>相信</dc:creator><author>相信</author><pubDate>Sat, 20 Aug 2011 09:53:00 GMT</pubDate><guid>http://www.blogjava.net/chensiyu04/articles/356964.html</guid><description><![CDATA[小时候 有时候没小朋友陪我玩..我就会一咕隆的八字趴在地板上..拿出黑色的火柴头..拼着那些喜欢的形状..<br />其实.我小时候是个天才..只是长大了..变傻了....几年都没玩过火柴拼图了..哈哈哈..咱就用Java2D来玩一玩.<br /><br />玩了一会..发现..这个小东西..让我一直玩不腻..不停的拼出各种各样的东西..有的像球门...有的像xx接下来一个一个拼着玩..<br /><br /><br /><br />(球门???)<br /><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/qioumen.PNG" width="561" height="537" alt="" /><br /><br /><br />(四驱车??)<br /><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/siquche.PNG" alt="" /><br /><br /><br />(文件夹??)<br /><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/swing_folder.PNG" alt="" /><br /><br />(书?? 还是椅子?还是沙发?还是笔记本?还是啥?)<br /><br /><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/book.PNG" alt="" /><img src ="http://gui.blogjava.net/aggbug/356964.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chensiyu04/" target="_blank">相信</a> 2011-08-20 17:53 <a href="http://www.blogjava.net/chensiyu04/articles/356964.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Swing 组件动态滚动效果</title><link>http://www.blogjava.net/chensiyu04/articles/356961.html</link><dc:creator>相信</dc:creator><author>相信</author><pubDate>Sat, 20 Aug 2011 08:30:00 GMT</pubDate><guid>http://www.blogjava.net/chensiyu04/articles/356961.html</guid><description><![CDATA[不知道什么时候..网页上流行了那种 旋转木马效果.<br />目前swing上还未看到任何相关的效果组件...今天就写了一个..<br /><br /><br /><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/iswing_1.PNG" alt="" /><br /><br />动态将组件滚动向某方向滚动..<br /><br /><div><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "><span style="color: #808080; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">|----------------------------------------------------------------------------------------|<br /></span><span style="color: #808080; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;版权声明&nbsp; 版权所有 @chensiyu<br /></span><span style="color: #808080; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 引用请注明来源&nbsp;<div style="display: inline-block; "><div><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: 19px; color: #808080; ">www.blogjava.net/chensiyu04</span></div></div><br /><div><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: 19px; color: #808080; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 本文由 &nbsp;陈思羽 于 2011年8月20号 出品..</span></div></span><span style="color: #808080; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; ">|----------------------------------------------------------------------------------------|</span></span></div>其实不难..分析一下..<br />2个JButton 一个JList 一个JScrollPanel. 在来个动画效果 搞定.<br /><span style="color: red; ">//代码整修</span><img src ="http://gui.blogjava.net/aggbug/356961.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chensiyu04/" target="_blank">相信</a> 2011-08-20 16:30 <a href="http://www.blogjava.net/chensiyu04/articles/356961.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JME2(JavaMonkeyEngine2):选择物体并且在缩略图中显示. 鼠标右键按下旋转视角</title><link>http://www.blogjava.net/chensiyu04/articles/346970.html</link><dc:creator>相信</dc:creator><author>相信</author><pubDate>Thu, 24 Mar 2011 09:52:00 GMT</pubDate><guid>http://www.blogjava.net/chensiyu04/articles/346970.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 发现BlogJava没以前人气旺了...首页都没啥人更新了..那我在写一个吧.一个小程序 ..支持鼠标左键点击 &nbsp;右键按下可旋转 &nbsp;缩略图可以展示被点击的物体.功能:左边是个缩略图.白框外面是场景...要求点击场景中的任何一个物体并且将物体显示在缩略图中..并且鼠标要求左键无法移动视角只可点击..右键只有在按下时 才可旋转视角.要实现这个效果...&nbsp;&nbsp;<a href='http://www.blogjava.net/chensiyu04/articles/346970.html'>阅读全文</a><img src ="http://gui.blogjava.net/aggbug/346970.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chensiyu04/" target="_blank">相信</a> 2011-03-24 17:52 <a href="http://www.blogjava.net/chensiyu04/articles/346970.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Swing不丑系列:JComboBox</title><link>http://www.blogjava.net/chensiyu04/articles/346868.html</link><dc:creator>相信</dc:creator><author>相信</author><pubDate>Wed, 23 Mar 2011 08:58:00 GMT</pubDate><guid>http://www.blogjava.net/chensiyu04/articles/346868.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一直都是一只菜鸟..不管别人怎么说.一直认为Swing不丑..所以打算这段时间写个Swing不丑系列(献丑了)|----------------------------------------------------------------------------------------|&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &n...&nbsp;&nbsp;<a href='http://www.blogjava.net/chensiyu04/articles/346868.html'>阅读全文</a><img src ="http://gui.blogjava.net/aggbug/346868.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chensiyu04/" target="_blank">相信</a> 2011-03-23 16:58 <a href="http://www.blogjava.net/chensiyu04/articles/346868.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Node的属性改变后通知属性表单（Propertites Sheet）更新</title><link>http://www.blogjava.net/chenweionline/archive/2011/03/06/345838.html</link><dc:creator>陈维</dc:creator><author>陈维</author><pubDate>Sun, 06 Mar 2011 14:15:00 GMT</pubDate><guid>http://www.blogjava.net/chenweionline/archive/2011/03/06/345838.html</guid><description><![CDATA[Node API提供了一个方法在Node属性集变化时通知注册在其上的监听器更新。<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;firePropertySetsChange(Node.PropertySet[]&nbsp;o,&nbsp;Node.PropertySet[]&nbsp;n)</span></div>
<br />
如图，精灵动画就是一个自定义的Node，当使用鼠标将Node从A点拖拽到B点时，Node坐标已经改变，可以调用Node的<span style="color: #000000;">firePropertySetsChange()</span>方法通知属性表单（Propertites Sheet）更新显示。<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/chenweionline/Snapshot/673b34d149612692cf5cc.jpg" width="878" height="615" /><br />
<br />
因为<span style="color: #000000;">firePropertySetsChange()是个受保护（protected）的方法，如果需要在Node的外部调用，还可以包装在自定义的公共（public）方法里。</span><br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;"> notifySheetChange(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;firePropertySetsChange(</span><span style="color: #0000ff;">null</span><span style="color: #000000;">,&nbsp;Sheet.createDefault().toArray());<br />
}</span></div>
<br />
<img src ="http://gui.blogjava.net/aggbug/345838.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenweionline/" target="_blank">陈维</a> 2011-03-06 22:15 <a href="http://www.blogjava.net/chenweionline/archive/2011/03/06/345838.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NetBeans 任务提醒插件(Linux 平台)</title><link>http://www.blogjava.net/gml520/archive/2010/12/31/342098.html</link><dc:creator>日月雨林@gmail.com</dc:creator><author>日月雨林@gmail.com</author><pubDate>Fri, 31 Dec 2010 12:25:00 GMT</pubDate><guid>http://www.blogjava.net/gml520/archive/2010/12/31/342098.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天在Dzone 上看到一篇文章介绍，NetBeans 使用 Growl 来实现 NetBeans 执行任务时的本地化方式提醒，感觉很不错。文章链接地址：<br />
<a href="http://netbeans.dzone.com/nbnotify-netbeans-growl">http://netbeans.dzone.com/nbnotify-netbeans-growl&nbsp;&nbsp;&nbsp; </a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img alt="" src="http://netbeans.dzone.com/sites/all/files/dzone-growl-notification-small.png" height="88" width="550" /><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 联想到Linux上也有类似的提醒，而且操作很简单，于是就想是不是自己也写个类似的插件来供自己使用呢？ 说干就干，按照流程 新建一个NetBeans 插件项目，然后再新建一个 Installer ，这个Installer 是在模块被载入的时候执行的。所以在这个Installer中 注册一个监听器，用来监听 NetBeans 的任务操作。监听到任务后，接下来的事情就好办了，只要判断任务状态就可以了，然后根据任务的状态发送提醒信息。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在Linux的各个发行版中使用提醒命令最多的是 <span style="color: red;">notify-send </span>这个命令，在Fedora 和Ubuntu 的Gnome 环境中都是使用这个命令。我的机器上同时安装 Fedora 14 （KDE桌面）和 Ubuntu10.10（Gnome桌面），所以我就在这两个发行版上测试。在测试的过程中，发现在Ubuntu 10.10 中notify-send 这个命令的 -t 参数竟然不起作用，-t 参数是用来控制提醒保留的时间的，但是在Ubuntu10.10中，无论你设不设置 -t 参数，他都是保持10秒后隐藏提醒，于是在Ubuntu10.10 下使用这个插件就很悲剧的不能及时的展现通知，只能10秒后再显示下一条通知，相反在Fedora14 KDE 中却工作良好。下面四张截图就是分别在Fedora&nbsp; 14 KDE 和Ubuntu10.10 Gnome桌面环境下的效果图：<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在Ubuntu10.10 Gnome 中当 NetBeans 对项目执行<span style="color: red;">&#8220; 生成 &#8221;</span>任务的开始 和 结束 时的提醒状态。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img alt="" src="http://www.blogjava.net/images/blogjava_net/gml520/ubuntu_001.png" height="243" width="350" /> <img alt="" src="http://www.blogjava.net/images/blogjava_net/gml520/ubuntu_002.png" height="215" width="354" /><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在Fedora14 KDE 中当 NetBenas 对项目执行 <span style="color: red;">&#8220;清理并生成&#8221;</span> 任务的 开始 和 结束 时的提醒状态。<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img alt="" src="http://www.blogjava.net/images/blogjava_net/gml520/snapshot12.png" height="241" width="472" />&nbsp; <img alt="" src="http://www.blogjava.net/images/blogjava_net/gml520/snapshot13.png" height="240" width="474" /><br />
<br />
<br />
&nbsp; 怎么样，效果还不错吧，其实在KDE中还有一个更加强大的提醒工具，那就是<span style="color: red;"> kdialog </span>，kdialog 不仅拥有 notify-send 的所有功能，同时还拥有更加强大的提示功能，比如对话框形式，密码输入等等，如果想要了解更多的kdialog 提醒功能，请使用<span style="color: red;"> kdiglog --help </span>这个命令获取更多的参数了解。<br />
目前这个插件的功能还比较弱，只能对执行任务时 的开始和结束状态 做出提醒，对于执行项目出错等状态还不能提醒，不过目前的这个提醒还凑和，至少你可以在编译 一个耗时比较长的项目的时候去做其他的事情，编译完成后，NetBeans 会自动的提醒你编译任务完成了（无论是否成功）。<br />
<br />
BTW： 明天就是 新年--2011 年了，祝大家 新年快乐！万事如意！财源滚滚！ 同时也祝福自己！<br />
<br />
插件下载：<a href="http://www.blogjava.net/Files/gml520/org-netbeans-localnotify.nbm.zip" title="NbLocalNotify">NbLocalNotify</a>&nbsp;&nbsp; （Linux only，源码将在下一篇博客中公布）。<br />
<br />
<img src ="http://gui.blogjava.net/aggbug/342098.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gml520/" target="_blank">日月雨林@gmail.com</a> 2010-12-31 20:25 <a href="http://www.blogjava.net/gml520/archive/2010/12/31/342098.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NetBeans 7.0 Beta 发布</title><link>http://www.blogjava.net/gml520/archive/2010/11/21/338616.html</link><dc:creator>日月雨林@gmail.com</dc:creator><author>日月雨林@gmail.com</author><pubDate>Sun, 21 Nov 2010 08:48:00 GMT</pubDate><guid>http://www.blogjava.net/gml520/archive/2010/11/21/338616.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:    NetBeans 最新版本NetBeans 7.0 Beta 发布了，想要体验新版本的童鞋们可以去官方网站上下载了。<br>http://dlc.sun.com.edgesuite.net/netbeans/7.0/beta/&nbsp;&nbsp;<a href='http://www.blogjava.net/gml520/archive/2010/11/21/338616.html'>阅读全文</a><img src ="http://gui.blogjava.net/aggbug/338616.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gml520/" target="_blank">日月雨林@gmail.com</a> 2010-11-21 16:48 <a href="http://www.blogjava.net/gml520/archive/2010/11/21/338616.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaFX Script 的替代品 Visage</title><link>http://www.blogjava.net/gml520/archive/2010/10/14/335086.html</link><dc:creator>日月雨林@gmail.com</dc:creator><author>日月雨林@gmail.com</author><pubDate>Thu, 14 Oct 2010 02:00:00 GMT</pubDate><guid>http://www.blogjava.net/gml520/archive/2010/10/14/335086.html</guid><description><![CDATA[<span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium Simsun; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">&nbsp;&nbsp;&nbsp;&nbsp;在今年的JavaOne 上Oracle 宣布停止JavaFX 脚本语言的开发，转而用Java API实现JavaFX 的功能，就我个人而言，我更倾向于JavaFX Script, JavaFX Script 当初使用自己的语言而不是使用Java 语言，就是为了减少 程序员的负担，以更简洁更人性化的语法公诸于世。然而Oracle 却放弃了JavaFX Script。 于是就有JavaFX Script 的爱好者开发了 Visage语言来延续JavaFX ，虽然名字不一样，但是语法却是一样的。 他的 项目主页 ：<a href="http://code.google.com/p/visage/">http://code.google.com/p/visage/</a>&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp; 原先用JavaFX 语言开发的应用可以继续开发了，不用再因为Oracle 放弃JavaFX而苦恼了，因为有开源的Visage，呵呵！有兴趣的朋友可以去 Visage 的项目主页上看看。</span>
<img src ="http://gui.blogjava.net/aggbug/335086.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gml520/" target="_blank">日月雨林@gmail.com</a> 2010-10-14 10:00 <a href="http://www.blogjava.net/gml520/archive/2010/10/14/335086.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaFX截屏程序(开发中)</title><link>http://www.blogjava.net/chensiyu04/articles/332445.html</link><dc:creator>相信</dc:creator><author>相信</author><pubDate>Sun, 19 Sep 2010 08:43:00 GMT</pubDate><guid>http://www.blogjava.net/chensiyu04/articles/332445.html</guid><description><![CDATA[记得在windows上时ctrl+alt+a ＱＱ就能自动截图..虽然现在java还做不到全局键盘监听...
<div><br />
&nbsp;
<div>最近几个月一直用Linux 总感觉少了截图功能很不方便...就在找工作的空闲时间弄了这个...还在做..功能才几个.</div>
<div><br />
</div>
<div>一点一点的加.先上几张截图.. -.- 希望那些帅哥,美女,有啥好的想法也说说..等开发完成还在本帖以及<a href="http://www.javaswingchina.com">javaswingchina</a>发源码.</div>
<div><br />
</div>
<div>先来个小截图:</div>
<div><img src="http://www.blogjava.net/images/blogjava_net/chensiyu04/Screenshot1.png" width="1280" height="800" alt="" /><br />
</div>
</div><img src ="http://gui.blogjava.net/aggbug/332445.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chensiyu04/" target="_blank">相信</a> 2010-09-19 16:43 <a href="http://www.blogjava.net/chensiyu04/articles/332445.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Swing Chart 教程 (8.26)</title><link>http://www.blogjava.net/chensiyu04/articles/329400.html</link><dc:creator>相信</dc:creator><author>相信</author><pubDate>Thu, 19 Aug 2010 09:29:00 GMT</pubDate><guid>http://www.blogjava.net/chensiyu04/articles/329400.html</guid><description><![CDATA[<div><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">一个Swing chart的基础教程 新手教程 。。</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; "><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />
</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">&nbsp; &nbsp; 一步一步更新..</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; "><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />
</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; "><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />
</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">&nbsp; &nbsp;</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">&nbsp;</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; "><font color="red" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; ">8月10号:更新内容(1.1版本):<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />
</font></span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">&nbsp; &nbsp; 1.BarChart的垂直间距.</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; "><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />
</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">&nbsp; &nbsp; 2.BarChart的高度</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; "><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />
</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">&nbsp; &nbsp; 3.BarChart的Bar之间的距离</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; "><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />
</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">&nbsp; &nbsp; 4.增加左列表数值的小数点显示</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; "><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />
</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">&nbsp; &nbsp; 5.等等一些小功能及小问题修复.&nbsp; &nbsp;</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; "><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />
</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">&nbsp; &nbsp;</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">&nbsp;</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; "><font color="#FF0000" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; ">8月12号:更新内容(1.2版本):</font></span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; "><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />
</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">&nbsp; &nbsp; 1.增加Legend 图例</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; "><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />
</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">&nbsp; &nbsp; 2.增加Popup 弹出窗口</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; "><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />
</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">&nbsp; &nbsp; 3.增加 Seriesobject 类</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; "><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />
</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">&nbsp; &nbsp; 4.对颜色进行渐变处理</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; "><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />
</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">&nbsp; &nbsp; 5.修复一些小bug以及增加些小功能&nbsp; &nbsp;</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">&nbsp;</span></div>
<div><span style="border-collapse: collapse; color: #ff0000; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">8月18号:更新内容(1.3版本):</span></div>
<div><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">&nbsp; &nbsp; 1.增加vbargraph接口 setLegend(true);&nbsp;&nbsp;图例</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; "><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />
</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">&nbsp; &nbsp; 2.增加vbargraphl接口 setGradientfill(true); 渐变</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; "><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />
</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">&nbsp; &nbsp; 3.增加outLine功能 vbargraph.setOutline(true);</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; "><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />
</span><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">&nbsp; &nbsp; 4.修复Linux下Legend 以及windows下Legend 的一些bug</span></div>
<div><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">&nbsp;<font color="#FF0000" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; ">8月26号:更新内容(2.0版本):</font><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />
&nbsp; &nbsp; 1.增加3D效果.&nbsp; &nbsp; 2.对VerticalBarGraph 增加setThreed(true) true = 启动3D效果 false = 关闭3D效果<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />
&nbsp; &nbsp; 3.修正图例在Linux下显示问题.<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />
&nbsp; &nbsp; 4.修复一些小bug&nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />
&nbsp; &nbsp; 5.版本暂时结束更新..过段时间在继续更新.</span></div>
<div><span style="border-collapse: collapse; color: #444444; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; font-size: 14px; line-height: 21px; "><a href="http://www.javaswingchina.com/forum.php?mod=viewthread&amp;tid=79&amp;extra=page%3D1"></a><a href="http://www.swingchina.net">源码下载</a></span></div>
<div>
<div><span style="border-collapse: collapse; color: #a0522d; font-family: 'DejaVu Sans', 'Lucida Grande', Tahoma, 'Hiragino Sans GB', STHeiti, SimSun, sans-serif; line-height: 27px; font-size: large; "><img src="http://www.blogjava.net/images/blogjava_net/chensiyu01/45901/r_swingchart2.0.png" alt="" /></span></div>
</div><img src ="http://gui.blogjava.net/aggbug/329400.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chensiyu04/" target="_blank">相信</a> 2010-08-19 17:29 <a href="http://www.blogjava.net/chensiyu04/articles/329400.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Swing - 半透明</title><link>http://www.blogjava.net/chensiyu04/articles/329392.html</link><dc:creator>相信</dc:creator><author>相信</author><pubDate>Thu, 19 Aug 2010 09:06:00 GMT</pubDate><guid>http://www.blogjava.net/chensiyu04/articles/329392.html</guid><description><![CDATA[转自<a href="www.javaswingchina.com">www.javaswingchina.com</a>
<div><a href="www.javaswingchina.com"></a><a href="http://www.javaswingchina.com/forum.php?mod=viewthread&amp;tid=64&amp;extra=page%3D1">源码下载</a><br />
<div><img src="http://www.blogjava.net/images/blogjava_net/chensiyu01/45901/r_bantouming.jpg" alt="" /></div>
<div><br />
</div>
</div><img src ="http://gui.blogjava.net/aggbug/329392.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chensiyu04/" target="_blank">相信</a> 2010-08-19 17:06 <a href="http://www.blogjava.net/chensiyu04/articles/329392.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用TopComponent群组</title><link>http://www.blogjava.net/chenweionline/archive/2010/08/07/328216.html</link><dc:creator>陈维</dc:creator><author>陈维</author><pubDate>Sat, 07 Aug 2010 14:46:00 GMT</pubDate><guid>http://www.blogjava.net/chenweionline/archive/2010/08/07/328216.html</guid><description><![CDATA[<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CUsers%5CLeon%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" />
<link rel="themeData" href="file:///C:%5CUsers%5CLeon%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CUsers%5CLeon%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>ZH-CN</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
<w:UseFELayout/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math" />
<m:brkBin m:val="before" />
<m:brkBinSub m:val="--" />
<m:smallFrac m:val="off" />
<m:dispDef/>
<m:lMargin m:val="0" />
<m:rMargin m:val="0" />
<m:defJc m:val="centerGroup" />
<m:wrapIndent m:val="1440" />
<m:intLim m:val="subSup" />
<m:naryLim m:val="undOvr" />
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267">
<w:LsdException locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal" />
<w:LsdException locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 2" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 3" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 4" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 5" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 6" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 7" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 8" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 9" />
<w:LsdException locked="false" priority="39" name="toc 1" />
<w:LsdException locked="false" priority="39" name="toc 2" />
<w:LsdException locked="false" priority="39" name="toc 3" />
<w:LsdException locked="false" priority="39" name="toc 4" />
<w:LsdException locked="false" priority="39" name="toc 5" />
<w:LsdException locked="false" priority="39" name="toc 6" />
<w:LsdException locked="false" priority="39" name="toc 7" />
<w:LsdException locked="false" priority="39" name="toc 8" />
<w:LsdException locked="false" priority="39" name="toc 9" />
<w:LsdException locked="false" priority="35" qformat="true" name="caption" />
<w:LsdException locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title" />
<w:LsdException locked="false" priority="1" name="Default Paragraph Font" />
<w:LsdException locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle" />
<w:LsdException locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong" />
<w:LsdException locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis" />
<w:LsdException locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid" />
<w:LsdException locked="false" unhidewhenused="false" name="Placeholder Text" />
<w:LsdException locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1" />
<w:LsdException locked="false" unhidewhenused="false" name="Revision" />
<w:LsdException locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph" />
<w:LsdException locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote" />
<w:LsdException locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6" />
<w:LsdException locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis" />
<w:LsdException locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis" />
<w:LsdException locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference" />
<w:LsdException locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference" />
<w:LsdException locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title" />
<w:LsdException locked="false" priority="37" name="Bibliography" />
<w:LsdException locked="false" priority="39" qformat="true" name="TOC Heading" />
</w:LatentStyles>
</xml><![endif]--><style>
<!-- /* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 680460288 22 0 262145 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1107304683 0 0 415 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-520092929 1073786111 9 0 415 0;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 680460288 22 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
mso-style-unhide:no;
mso-style-qformat:yes;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:21.0pt;
mso-char-indent-count:2.0;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:36.0pt;
mso-footer-margin:36.0pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
/* List Definitions */
@list l0
{mso-list-id:186913398;
mso-list-type:hybrid;
mso-list-template-ids:560772892 -411303738 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
{mso-level-text:%1、;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
</style>
<![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--><span lang="EN-US">TopComponent</span><span style="font-family: 宋体;">群组的作用是在打开一个</span><span lang="EN-US">TopComponent</span><span style="font-family: 宋体;">组件的同时，打开其他相关的</span><span lang="EN-US">TopComponent</span><span style="font-family: 宋体;">组件。例如，当打开或者激活</span><span lang="EN-US">GUI</span><span style="font-family: 宋体;">编辑器的时候，&#8220;组件面板&#8221;、&#8220;属性&#8221;窗口和&#8220;检查器&#8221;窗口都会出现。当需要一个组件同时伴随着很多其他类似于组件面板窗口的时候，利用</span><span lang="EN-US">TopComponent</span><span style="font-family: 宋体;">群组可以轻松实现一个组件的激活引发其他组件被打开或者被选中。</span><strong><span style="font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US"><br />
<br />
</span></strong><span style="font-family: 宋体;">定义群组涉及到</span><span lang="EN-US">2</span><span style="font-family: 宋体;">种</span><span lang="EN-US">XML</span><span style="font-family: 宋体;">文件。首先是</span><span lang="EN-US">wsgrp</span><span style="font-family: 宋体;">，它代表&#8220;窗口系统群组（</span><span lang="EN-US">Window System Group</span><span style="font-family: 宋体;">）&#8221;。它定义了&#8220;窗口系统&#8221;的群组，系统根据它的定义查找对应的目录，它也定义了群组是否应该在启动时打开。另一个文件是</span><span lang="EN-US">wstcgrp</span><span style="font-family: 宋体;">，它代表&#8220;窗口系统</span><span lang="EN-US">TopComponent</span><span style="font-family: 宋体;">群组（</span><span lang="EN-US">Window System TopComponent Group</span><span style="font-family: 宋体;">）&#8221;，这个文件通过</span><span lang="EN-US">ID</span><span style="font-family: 宋体;">识别单态的</span><span lang="EN-US">TopComponent</span><span style="font-family: 宋体;">组件，同时还定义了一些群组的打开和关闭属性。</span><span lang="EN-US"><o:p><br />
<br />
</o:p></span><strong><span style="font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">TopComponent</span></strong><strong><span style="font-family: 宋体;">群组编程实例</span></strong><strong><span style="font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US"><o:p></o:p></span></strong><strong><span style="font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US"><o:p><br />
</o:p></span></strong><br />
<span style="font-family: 宋体;">首先</span><span style="font-family: 宋体;">创建</span><span style="font-family: 宋体;">一个模块项目</span><span lang="EN-US">TopComponentGroup</span><span style="font-family: 宋体;">，</span><span style="font-family: 宋体;">然后</span><span style="font-family: 宋体;">新建</span><span lang="EN-US">2</span><span style="font-family: 宋体;">个窗口组件（</span><span lang="EN-US">TopComponent</span><span style="font-family: 宋体;">），命名为</span><span lang="EN-US">EditorTopComponent</span><span style="font-family: 宋体;">和</span><span lang="EN-US">SatelliteTopComponent</span><span style="font-family: 宋体;">，就像窗口的名字所表示的那样，</span><span lang="EN-US">SatelliteTopComponent</span><span style="font-family: 宋体;">将会随着</span><span lang="EN-US">EditorTopComponent</span><span style="font-family: 宋体;">的打开和关闭一同打开和关闭。</span><span lang="EN-US"><span><br />
<br />
</span></span><span style="font-family: 宋体;">首先新建一个名为</span><span lang="EN-US">EditorGroupWsgrp</span><span style="font-family: 宋体;">的</span><span lang="EN-US">xml</span><span style="font-family: 宋体;">文件</span><span lang="EN-US"><span>，这个文件里定义了名为EditorGroup的编辑器窗口群组。 <br />
</span></span>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">group&nbsp;</span><span style="color: #ff0000;">version</span><span style="color: #0000ff;">="2.0"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">module&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="org.jqueen.nb.topcomponentgroup"</span><span style="color: #ff0000;">&nbsp;spec</span><span style="color: #0000ff;">="1.0"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">name&nbsp;</span><span style="color: #ff0000;">unique</span><span style="color: #0000ff;">="EditorGroup"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">state&nbsp;</span><span style="color: #ff0000;">opened</span><span style="color: #0000ff;">="false"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">group</span><span style="color: #0000ff;">&gt;</span></div>
<span lang="EN-US"><span><br />
</span></span><span lang="EN-US"><span>再新建一个名为SatelliteTopComponentWstcgrp的xml文件，在这个文件里可以通过ID识别出</span></span><span lang="EN-US">SatelliteTopComponent</span><span lang="EN-US"><span>组件</span></span><span style="font-family: 宋体;">。</span>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tc-group&nbsp;</span><span style="color: #ff0000;">version</span><span style="color: #0000ff;">="2.0"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tc-id&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="SatelliteTopComponent"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">open-close-behavior&nbsp;</span><span style="color: #ff0000;">open</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;">&nbsp;close</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">tc-group</span><span style="color: #0000ff;">&gt;</span></div>
<br />
<span style="font-family: 宋体;">编辑模块的</span><span lang="EN-US">layer.xml</span><span style="font-family: 宋体;">文件，在系统文件系统中的</span><span lang="EN-US">Windows2</span><span style="font-family: 宋体;">目录添加一个</span><span lang="EN-US">Group</span><span style="font-family: 宋体;">文件夹，将名为"EditorGroup"的群组添加进Group。<br />
</span>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">folder&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="Groups"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">file&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="EditorGroup.wsgrp"</span><span style="color: #ff0000;">&nbsp;url</span><span style="color: #0000ff;">="EditorGroupWsgrp.xml"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">folder&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="EditorGroup"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">file&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="SatelliteTopComponent.wstcgrp"</span><span style="color: #ff0000;">&nbsp;url</span><span style="color: #0000ff;">="SatelliteTopComponentWstcgrp.xml"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">folder</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">folder</span><span style="color: #0000ff;">&gt;</span></div>
<br />
编辑<span lang="EN-US">EditorTopComponent</span><span style="font-family: 宋体;">内容，重写TopComponent类的componentOpened()和componentClosed()方法，在</span><span lang="EN-US">EditorTopComponent</span><span style="font-family: 宋体;">被打开和关闭时打开和关闭名为"EditorGroup"的群组。<br />
</span>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;componentOpened()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TopComponentGroup&nbsp;group&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;WindowManager.getDefault().findTopComponentGroup(</span><span style="color: #000000;">"</span><span style="color: #000000;">EditorGroup</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(group&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;group.open();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;componentClosed()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TopComponentGroup&nbsp;group&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;WindowManager.getDefault().findTopComponentGroup(</span><span style="color: #000000;">"</span><span style="color: #000000;">EditorGroup</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(group&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;group.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br />
<span style="font-family: 宋体;">至此，就完成了一个TopComponent群组的编辑。执行模块项目，当从窗口菜单中打开EditorTopComponent时</span><span lang="EN-US">SatelliteTopComponent</span><span lang="EN-US"><span>会自动打开，</span></span><span style="font-family: 宋体;">EditorTopComponent被关闭时</span><span lang="EN-US">SatelliteTopComponent</span><span lang="EN-US"><span>也会自动关闭。</span></span><br />
<br />
<a target="_blank" title="样例程序下载" href="https://kenai.com/projects/topcomponentgroup">样例程序下载</a><br />
<br />
<img src ="http://gui.blogjava.net/aggbug/328216.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenweionline/" target="_blank">陈维</a> 2010-08-07 22:46 <a href="http://www.blogjava.net/chenweionline/archive/2010/08/07/328216.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>