﻿<?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-囝泺的博客[www.bluenuo.cn]-随笔分类-SWT/JFace</title><link>http://www.blogjava.net/chybox/category/28150.html</link><description>网盘[disk.bluenuo.cn]</description><language>zh-cn</language><lastBuildDate>Fri, 25 Jan 2008 10:39:43 GMT</lastBuildDate><pubDate>Fri, 25 Jan 2008 10:39:43 GMT</pubDate><ttl>60</ttl><item><title>学swt的一个实践</title><link>http://www.blogjava.net/chybox/archive/2008/01/25/177735.html</link><dc:creator>囝泺</dc:creator><author>囝泺</author><pubDate>Fri, 25 Jan 2008 04:40:00 GMT</pubDate><guid>http://www.blogjava.net/chybox/archive/2008/01/25/177735.html</guid><wfw:comment>http://www.blogjava.net/chybox/comments/177735.html</wfw:comment><comments>http://www.blogjava.net/chybox/archive/2008/01/25/177735.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chybox/comments/commentRss/177735.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chybox/services/trackbacks/177735.html</trackback:ping><description><![CDATA[<p dir="ltr" style="margin-right: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;学了一段实践SWT/JFace,也学会了不少东西，java课程设计就用swt做了个类似QQ的聊天软件，分服务端与客户端，也花了2个多星期时间，现在把安装软件帖出来，下载地址在最下面，用的学校的服务器，如果失效了请联系我，需要源代码的可以发我mail:chybox@yahoo.cn，下面稍微介绍一下这个小软件。</p>
<p>
<center>文/囝泺 <a href="http://www.bluenuo.cn/">www.bluenuo.cn</a><br />
<hr />
<br />
</center>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;软件分服务端与客户端，所有通信信息都统一发送到服务端，由服务端通信协议负责分发到相应的客户端，协议我做得比较简单，通过一个MyMessage类来实例化一次具体的通信信息，其类结构如下</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.Serializable;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Date;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img id="Codehighlighter1_100_292_Open_Image" onclick="this.style.display='none'; Codehighlighter1_100_292_Open_Text.style.display='none'; Codehighlighter1_100_292_Closed_Image.style.display='inline'; Codehighlighter1_100_292_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_100_292_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_100_292_Closed_Text.style.display='none'; Codehighlighter1_100_292_Open_Image.style.display='inline'; Codehighlighter1_100_292_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;MyMessage&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;Serializable</span><span id="Codehighlighter1_100_292_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_100_292_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;src;//发送者的id号，其中id号注册后获得，唯一标识一个用户<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;des;//目的id号<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;cas;//协议号<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Usr&nbsp;usr;//用户信息，可以为null<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;message;//发送的消息<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Date&nbsp;date;//发送时间<br />
<img id="Codehighlighter1_232_290_Open_Image" onclick="this.style.display='none'; Codehighlighter1_232_290_Open_Text.style.display='none'; Codehighlighter1_232_290_Closed_Image.style.display='inline'; Codehighlighter1_232_290_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_232_290_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_232_290_Closed_Text.style.display='none'; Codehighlighter1_232_290_Open_Image.style.display='inline'; Codehighlighter1_232_290_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;MyMessage()</span><span id="Codehighlighter1_232_290_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_232_290_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;src</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;des</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cas</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usr</span><span style="color: #000000">=</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message</span><span style="color: #000000">=</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
<p><br />
协议信息比较简单，不过处理这个聊天的事务已经足够了。</p>
<p>客户端也有个完全一样的类，只是协议的具体内容不太一样，同时，客户端和服务端还用了不少的范型结构，如LinkedList&lt;&gt;,HashMap&lt;&gt;等<br />
下面帖几张软件的截图<br />
<img height="238" alt="" src="http://www.blogjava.net/images/blogjava_net/chybox/0001.jpg" width="329" border="0" /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;图一：客户端登陆界面<br />
<img height="486" alt="" src="http://www.blogjava.net/images/blogjava_net/chybox/0002.jpg" width="217" border="0" /><br />
&nbsp; 图2：客户端好友面板<br />
<img height="437" alt="" src="http://www.blogjava.net/images/blogjava_net/chybox/0003.jpg" width="394" border="0" /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 图片3：客户端消息对话框<br />
<img height="189" alt="" src="http://www.blogjava.net/images/blogjava_net/chybox/0004.jpg" width="207" border="0" /><br />
&nbsp;&nbsp;&nbsp; 图片4：服务端主界面<br />
<img height="165" alt="" src="http://www.blogjava.net/images/blogjava_net/chybox/0005.jpg" width="407" border="0" /><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; 图片5：服务端数据库管理界面<br />
以上是整个软件大体上的界面，需要了解更多可以通过下面的链接下载，安装包自带jre，<span style="color: #ff0000">使用的时候需要把客户端的host.ini文件里的ip改成localhost或者改成你自己的ip，服务端必须先通过管理工具开启用户注册，否则无法注册。<br />
<span style="color: #000000">服务端下载地址：<a href="http://edu.bluenuo.cn/myfiles/chyqq_ser_windows_2008beta.exe">http://edu.bluenuo.cn/myfiles/chyqq_ser_windows_2008beta.exe</a><br />
客户端下载地址：<a href="http://edu.bluenuo.cn/myfiles/chyqq_windows_2008beta.exe">http://edu.bluenuo.cn/myfiles/chyqq_windows_2008beta.exe</a><br />
<br />
需要源代码可以通过我的mail联系我chybox@yahoo.cn<br />
<br />
<hr />
</span></span>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/chybox/aggbug/177735.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chybox/" target="_blank">囝泺</a> 2008-01-25 12:40 <a href="http://www.blogjava.net/chybox/archive/2008/01/25/177735.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>主窗口居中显示</title><link>http://www.blogjava.net/chybox/archive/2007/12/16/168072.html</link><dc:creator>囝泺</dc:creator><author>囝泺</author><pubDate>Sun, 16 Dec 2007 07:35:00 GMT</pubDate><guid>http://www.blogjava.net/chybox/archive/2007/12/16/168072.html</guid><wfw:comment>http://www.blogjava.net/chybox/comments/168072.html</wfw:comment><comments>http://www.blogjava.net/chybox/archive/2007/12/16/168072.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chybox/comments/commentRss/168072.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chybox/services/trackbacks/168072.html</trackback:ping><description><![CDATA[<center>
<p>文/囝泺 <a href="http://www.bluenuo.cn">www.bluenuo.cn</a></p>
</center>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">shell&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Shell();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />shell.setSize(</span><span style="color: #000000">500</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">375</span><span style="color: #000000">);<br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Monitor&nbsp;primary&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;shell.getMonitor();//获得屏幕<br />
&nbsp;&nbsp;&nbsp;&nbsp;Rectangle&nbsp;bounds&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;primary.getBounds&nbsp;();//获得屏幕尺寸<br />
&nbsp;&nbsp;&nbsp;&nbsp;Rectangle&nbsp;rect&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;shell.getBounds&nbsp;();//获得窗口尺寸<br />
&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;bounds.x&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;(bounds.width&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;rect.width)&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">;//计算x坐标<br />
&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;bounds.y&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;(bounds.height&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;rect.height)&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">;//计算y坐标<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(x&nbsp;</span><span style="color: #000000">&lt;</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;x&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;(y&nbsp;</span><span style="color: #000000">&lt;</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;y&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;shell.setLocation&nbsp;(x,&nbsp;y);//设置窗口坐标<br />
&nbsp;&nbsp;&nbsp;&nbsp;shell.open();</span></div>
<img src ="http://www.blogjava.net/chybox/aggbug/168072.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chybox/" target="_blank">囝泺</a> 2007-12-16 15:35 <a href="http://www.blogjava.net/chybox/archive/2007/12/16/168072.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>