﻿<?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-Rendezvous with Rama-文章分类-Eclipse</title><link>http://www.blogjava.net/wguzgg/category/11799.html</link><description>Rendezvous with Rama</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 12:32:52 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 12:32:52 GMT</pubDate><ttl>60</ttl><item><title>编写Eclipse Plugin</title><link>http://www.blogjava.net/wguzgg/articles/49984.html</link><dc:creator>Rendezvous with Rama</dc:creator><author>Rendezvous with Rama</author><pubDate>Fri, 02 Jun 2006 08:48:00 GMT</pubDate><guid>http://www.blogjava.net/wguzgg/articles/49984.html</guid><wfw:comment>http://www.blogjava.net/wguzgg/comments/49984.html</wfw:comment><comments>http://www.blogjava.net/wguzgg/articles/49984.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wguzgg/comments/commentRss/49984.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wguzgg/services/trackbacks/49984.html</trackback:ping><description><![CDATA[
		<p>使用Eclipse的新建向导，可以很容易就创建一个Plugin项目：<br />选择新建菜单中的Plug-in Development--&gt;Plug-in Project<br />在Plugin Content属性页中Would you like to create a rich client application选择Yes<br />创建向导中提供了几个模板，可以节省很多工作。<br />其实一个Eclipse的Plugin项目，最关键的就是该项目根目录下的<br />plugin.xml，plugin.properties，build.properties，META-INF/MANIFEST.MF<br />如果该插件是做为product发布的，那还会有一个  "产品名.product"  文件<br />当创建好了一个插件项目后，再执行新建菜单中的Plug-in Development--&gt;Product Configuration，可以为该插件项目转化为一个产品。<br />当要运行一个插件时，有一点需要注意的就是，如果项目中用到了外部的jar的话，需要告诉Eclipse该插件所用到的jar的位置，<br />为此，请使用Plug-in Manifest Editor打开plugin.xml文件，<br />在Build属性页中，用Add Library新增本项目自己的jar<br />在Runtime属性页中，右下角的Classpath里，添加入所用到的外部的jar，注意这些jar必须要在项目下。再使用新建按钮，增加本项目生成的jar</p>
<img src ="http://www.blogjava.net/wguzgg/aggbug/49984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wguzgg/" target="_blank">Rendezvous with Rama</a> 2006-06-02 16:48 <a href="http://www.blogjava.net/wguzgg/articles/49984.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用webrcp部署富客户端</title><link>http://www.blogjava.net/wguzgg/articles/49908.html</link><dc:creator>Rendezvous with Rama</dc:creator><author>Rendezvous with Rama</author><pubDate>Fri, 02 Jun 2006 04:01:00 GMT</pubDate><guid>http://www.blogjava.net/wguzgg/articles/49908.html</guid><wfw:comment>http://www.blogjava.net/wguzgg/comments/49908.html</wfw:comment><comments>http://www.blogjava.net/wguzgg/articles/49908.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wguzgg/comments/commentRss/49908.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wguzgg/services/trackbacks/49908.html</trackback:ping><description><![CDATA[webrcp是sourceforge上的一个小项目，它使用java web start方式部署客户端应用到本地机上。<br />java web start本身是一个不错的部署方式，这个到没什么好说的。<br />webrcp有趣的地方在于，它本身其实只是相当于一个容器的作用，你自己的应用程序可以打成一个zip包，webrcp可以自动把你的zip包下载到本地机上，并自动解开放到指定目录下，然后自动运行你指定的主类。<br />这样的话，你就省却了签名，处理dll文件等一系列麻烦的事情。<br />webrcp本身很是简短，程序也很好懂，只不过我之前从没有想过，还可以有它这种解决方式。<br />它的程序中我看最有趣的是下面几句<br />            URLClassLoader classLoader = new URLClassLoader(getBootPath());<br />            Class starterClass = classLoader.loadClass(STARTER_CLASS);<br />getBootPath()方法返回运行你的主类所需要的jar的url数组。<br />以前写程序大都是老老实实的，很少涉及到类加载器这一块，看到这里，真是为自己的孤陋寡闻而惭愧。<br /><br />看了webrcp，我还有一个想法，我们无法要求用户安装我们需要的jre，可能用户机器上只装了jre1.2，而我们的应用却需要jre1.5。这样的话，我们可以把jre和我们的应用打包到一起，下载到本地机后，用我们自己的jre来启动应用。这样，只要求客户机支持java web start就可以了，对客户机的要求尽量减少到最小<img src ="http://www.blogjava.net/wguzgg/aggbug/49908.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wguzgg/" target="_blank">Rendezvous with Rama</a> 2006-06-02 12:01 <a href="http://www.blogjava.net/wguzgg/articles/49908.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在shell中设定一个默认的Button</title><link>http://www.blogjava.net/wguzgg/articles/49878.html</link><dc:creator>Rendezvous with Rama</dc:creator><author>Rendezvous with Rama</author><pubDate>Fri, 02 Jun 2006 02:44:00 GMT</pubDate><guid>http://www.blogjava.net/wguzgg/articles/49878.html</guid><wfw:comment>http://www.blogjava.net/wguzgg/comments/49878.html</wfw:comment><comments>http://www.blogjava.net/wguzgg/articles/49878.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wguzgg/comments/commentRss/49878.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wguzgg/services/trackbacks/49878.html</trackback:ping><description><![CDATA[当在一个文本框中输入完信息后，往往希望直接按下回车键即可使某按钮自动获得焦点，<br />而不需动用鼠标或者TAB键将焦点移到该按钮上。<br />当在一个文本框中输入完信息后，往往希望直接按下回车键即可使某按钮自动获得焦点，<br />而不需动用鼠标或者TAB键将焦点移到该按钮上。<br />要达到这个目的，只需调用shell.setDefaultButton(button)即可<img src ="http://www.blogjava.net/wguzgg/aggbug/49878.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wguzgg/" target="_blank">Rendezvous with Rama</a> 2006-06-02 10:44 <a href="http://www.blogjava.net/wguzgg/articles/49878.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在java程序中利用swt实现窗口始终最前以及透明窗口</title><link>http://www.blogjava.net/wguzgg/articles/49877.html</link><dc:creator>Rendezvous with Rama</dc:creator><author>Rendezvous with Rama</author><pubDate>Fri, 02 Jun 2006 02:43:00 GMT</pubDate><guid>http://www.blogjava.net/wguzgg/articles/49877.html</guid><wfw:comment>http://www.blogjava.net/wguzgg/comments/49877.html</wfw:comment><comments>http://www.blogjava.net/wguzgg/articles/49877.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wguzgg/comments/commentRss/49877.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wguzgg/services/trackbacks/49877.html</trackback:ping><description><![CDATA[从win2000开始,windows提供了一个新的api SetLayeredWindowAttributes,可以轻松实现透明窗口,在网上有许多vb,vc,delphi的示例程序,下面我来介绍一下如何使用swt来实现这一效果<br />从win2000开始,windows提供了一个新的api SetLayeredWindowAttributes,可以轻松实现透明窗口,在网上有许多vb,vc,delphi的示例程序,下面我来介绍一下如何使用swt来实现这一效果: <br /><br />BOOL SetLayeredWindowAttributes( <br />HWND hwnd, // handle to the layered window <br />COLORREF crKey, // specifies the color key <br />BYTE bAlpha, // value for the blend function <br />DWORD dwFlags // action <br />); <br /><br />Windows NT/2000/XP: Included in Windows 2000 and later. <br />Windows 95/98/Me: Unsupported. <br />Header: Declared in Winuser.h; include Windows.h. <br />Library: Use User32.lib. <br /><br />一些常量: <br />WS_EX_LAYERED = 0x80000; <br />LWA_ALPHA = 0x2; <br />LWA_COLORKEY=0x1 <br />其中dwFlags有LWA_ALPHA和LWA_COLORKEY <br />LWA_ALPHA被设置的话,通过bAlpha决定透明度. <br />LWA_COLORKEY被设置的话,则指定被透明掉的颜色为crKey,其他颜色则正常显示. <br />注:要使使窗体拥有透明效果,首先要有WS_EX_LAYERED扩展属性(旧sdk也没有的). <br />　 <br />上面是该函数的资料,下面是一段代码示例: <br /><table cellspacing="1" cellpadding="3" width="90%" align="center" border="0"><tbody><tr><td><strong>java代码: </strong></td></tr><tr><td><div style="FONT-FAMILY: 'courier new',courier,monospace" twffan="done"><br /><br />            display = <span style="FONT-WEIGHT: bold; COLOR: rgb(153,0,102)" twffan="done">new</span> Display<span style="COLOR: rgb(0,0,0)" twffan="done">(</span><span style="COLOR: rgb(0,0,0)" twffan="done">)</span>; <br />            shell = <span style="FONT-WEIGHT: bold; COLOR: rgb(153,0,102)" twffan="done">new</span> Shell<span style="COLOR: rgb(0,0,0)" twffan="done">(</span>display , SWT.<span style="COLOR: rgb(0,0,0)" twffan="done">NULL</span><span style="COLOR: rgb(0,0,0)" twffan="done">)</span>; <br />            shell.<span style="COLOR: rgb(0,0,0)" twffan="done">setMaximized</span><span style="COLOR: rgb(0,0,0)" twffan="done">(</span><span style="FONT-WEIGHT: bold; COLOR: rgb(153,0,102)" twffan="done">false</span><span style="COLOR: rgb(0,0,0)" twffan="done">)</span>; <br />            shell.<span style="COLOR: rgb(0,0,0)" twffan="done">setBackground</span><span style="COLOR: rgb(0,0,0)" twffan="done">(</span>display.<span style="COLOR: rgb(0,0,0)" twffan="done">getSystemColor</span><span style="COLOR: rgb(0,0,0)" twffan="done">(</span>SWT.<span style="COLOR: rgb(0,0,0)" twffan="done">COLOR_BLACK</span><span style="COLOR: rgb(0,0,0)" twffan="done">)</span><span style="COLOR: rgb(0,0,0)" twffan="done">)</span>; <br />            shell.<span style="COLOR: rgb(0,0,0)" twffan="done">setText</span><span style="COLOR: rgb(0,0,0)" twffan="done">(</span>"Example"<span style="COLOR: rgb(0,0,0)" twffan="done">)</span>; <br />            shell.<span style="COLOR: rgb(0,0,0)" twffan="done">setBounds</span><span style="COLOR: rgb(0,0,0)" twffan="done">(</span><span style="COLOR: rgb(0,0,0)" twffan="done">0</span> , <span style="COLOR: rgb(0,0,0)" twffan="done">700</span> , <span style="COLOR: rgb(0,0,0)" twffan="done">1024</span> , <span style="COLOR: rgb(0,0,0)" twffan="done">68</span><span style="COLOR: rgb(0,0,0)" twffan="done">)</span>; <br />            <br />            <span style="COLOR: rgb(102,102,255)" twffan="done">//始终最前</span><br />            OS.<span style="COLOR: rgb(0,0,0)" twffan="done">SetWindowPos</span><span style="COLOR: rgb(0,0,0)" twffan="done">(</span>shell.<span style="COLOR: rgb(0,0,0)" twffan="done">handle</span> , OS.<span style="COLOR: rgb(0,0,0)" twffan="done">HWND_TOPMOST</span>, <span style="COLOR: rgb(0,0,0)" twffan="done">0</span> , <span style="COLOR: rgb(0,0,0)" twffan="done">700</span> , <span style="COLOR: rgb(0,0,0)" twffan="done">1024</span> , <span style="COLOR: rgb(0,0,0)" twffan="done">68</span> , SWT.<span style="COLOR: rgb(0,0,0)" twffan="done">NULL</span><span style="COLOR: rgb(0,0,0)" twffan="done">)</span>; <br /><br />            <span style="COLOR: rgb(102,102,255)" twffan="done">//透明窗体</span><br />            OS.<span style="COLOR: rgb(0,0,0)" twffan="done">SetWindowLong</span><span style="COLOR: rgb(0,0,0)" twffan="done">(</span>shell.<span style="COLOR: rgb(0,0,0)" twffan="done">handle</span> , OS.<span style="COLOR: rgb(0,0,0)" twffan="done">GWL_EXSTYLE</span> , OS.<span style="COLOR: rgb(0,0,0)" twffan="done">GetWindowLong</span><span style="COLOR: rgb(0,0,0)" twffan="done">(</span>shell.<span style="COLOR: rgb(0,0,0)" twffan="done">handle</span> , OS.<span style="COLOR: rgb(0,0,0)" twffan="done">GWL_EXSTYLE</span><span style="COLOR: rgb(0,0,0)" twffan="done">)</span>^0x80000<span style="COLOR: rgb(0,0,0)" twffan="done">)</span>; <br /><br />            TCHAR lpLibFileName = <span style="FONT-WEIGHT: bold; COLOR: rgb(153,0,102)" twffan="done">new</span> TCHAR <span style="COLOR: rgb(0,0,0)" twffan="done">(</span><span style="COLOR: rgb(0,0,0)" twffan="done">0</span>, "User32.<span style="COLOR: rgb(0,0,0)" twffan="done">dll</span>", <span style="FONT-WEIGHT: bold; COLOR: rgb(153,0,102)" twffan="done">true</span><span style="COLOR: rgb(0,0,0)" twffan="done">)</span>; <br />            <span style="FONT-WEIGHT: bold; COLOR: rgb(153,0,102)" twffan="done">int</span> hInst = OS.<span style="COLOR: rgb(0,0,0)" twffan="done">LoadLibrary</span><span style="COLOR: rgb(0,0,0)" twffan="done">(</span>lpLibFileName<span style="COLOR: rgb(0,0,0)" twffan="done">)</span>; <br />            <span style="FONT-WEIGHT: bold; COLOR: rgb(153,0,102)" twffan="done">if</span><span style="COLOR: rgb(0,0,0)" twffan="done">(</span>hInst != <span style="COLOR: rgb(0,0,0)" twffan="done">0</span><span style="COLOR: rgb(0,0,0)" twffan="done">)</span><span style="COLOR: rgb(0,0,0)" twffan="done">{</span><br />                <span style="COLOR: rgb(170,170,221)" twffan="done">String</span> name = "SetLayeredWindowAttributes\<span style="COLOR: rgb(0,0,0)" twffan="done">0</span>"; <br />                <span style="FONT-WEIGHT: bold; COLOR: rgb(153,0,102)" twffan="done">byte</span><span style="COLOR: rgb(0,0,0)" twffan="done">[</span><span style="COLOR: rgb(0,0,0)" twffan="done">]</span> lpProcName = <span style="FONT-WEIGHT: bold; COLOR: rgb(153,0,102)" twffan="done">new</span><span style="FONT-WEIGHT: bold; COLOR: rgb(153,0,102)" twffan="done">byte</span><span style="COLOR: rgb(0,0,0)" twffan="done">[</span>name.<span style="COLOR: rgb(0,0,0)" twffan="done">length</span><span style="COLOR: rgb(0,0,0)" twffan="done">(</span><span style="COLOR: rgb(0,0,0)" twffan="done">)</span><span style="COLOR: rgb(0,0,0)" twffan="done">]</span>; <br />                <span style="FONT-WEIGHT: bold; COLOR: rgb(153,0,102)" twffan="done">for</span><span style="COLOR: rgb(0,0,0)" twffan="done">(</span><span style="FONT-WEIGHT: bold; COLOR: rgb(153,0,102)" twffan="done">int</span> i=<span style="COLOR: rgb(0,0,0)" twffan="done">0</span>; i&lt;lpProcName.<span style="COLOR: rgb(0,0,0)" twffan="done">length</span>; i++<span style="COLOR: rgb(0,0,0)" twffan="done">)</span><span style="COLOR: rgb(0,0,0)" twffan="done">{</span><br />                    lpProcName <span style="COLOR: rgb(0,0,0)" twffan="done">[</span>i<span style="COLOR: rgb(0,0,0)" twffan="done">]</span> = <span style="COLOR: rgb(0,0,0)" twffan="done">(</span><span style="FONT-WEIGHT: bold; COLOR: rgb(153,0,102)" twffan="done">byte</span><span style="COLOR: rgb(0,0,0)" twffan="done">)</span> name.<span style="COLOR: rgb(0,0,0)" twffan="done">charAt</span><span style="COLOR: rgb(0,0,0)" twffan="done">(</span>i<span style="COLOR: rgb(0,0,0)" twffan="done">)</span>; <br />                <span style="COLOR: rgb(0,0,0)" twffan="done">}</span><br />                <span style="FONT-WEIGHT: bold; COLOR: rgb(153,0,102)" twffan="done">int</span> fun = OS.<span style="COLOR: rgb(0,0,0)" twffan="done">GetProcAddress</span><span style="COLOR: rgb(0,0,0)" twffan="done">(</span>hInst , lpProcName<span style="COLOR: rgb(0,0,0)" twffan="done">)</span>; <br />                <span style="FONT-WEIGHT: bold; COLOR: rgb(153,0,102)" twffan="done">if</span><span style="COLOR: rgb(0,0,0)" twffan="done">(</span>fun != <span style="COLOR: rgb(0,0,0)" twffan="done">0</span><span style="COLOR: rgb(0,0,0)" twffan="done">)</span><span style="COLOR: rgb(0,0,0)" twffan="done">{</span><br />                    OS.<span style="COLOR: rgb(0,0,0)" twffan="done">CallWindowProc</span><span style="COLOR: rgb(0,0,0)" twffan="done">(</span>fun , shell.<span style="COLOR: rgb(0,0,0)" twffan="done">handle</span> , <span style="COLOR: rgb(0,0,0)" twffan="done">0</span>,<span style="COLOR: rgb(0,0,0)" twffan="done">50</span>,<span style="COLOR: rgb(0,0,0)" twffan="done">1</span><span style="COLOR: rgb(0,0,0)" twffan="done">)</span>; <br />                <span style="COLOR: rgb(0,0,0)" twffan="done">}</span><br />                OS.<span style="COLOR: rgb(0,0,0)" twffan="done">FreeLibrary</span><span style="COLOR: rgb(0,0,0)" twffan="done">(</span>hInst<span style="COLOR: rgb(0,0,0)" twffan="done">)</span>; <br />            <span style="COLOR: rgb(0,0,0)" twffan="done">}</span><br /></div><br /></td></tr></tbody></table><br />里面用到的几个类都在org.eclipse.swt.internal.win32下<img src ="http://www.blogjava.net/wguzgg/aggbug/49877.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wguzgg/" target="_blank">Rendezvous with Rama</a> 2006-06-02 10:43 <a href="http://www.blogjava.net/wguzgg/articles/49877.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>指定Text控件的宽度</title><link>http://www.blogjava.net/wguzgg/articles/49876.html</link><dc:creator>Rendezvous with Rama</dc:creator><author>Rendezvous with Rama</author><pubDate>Fri, 02 Jun 2006 02:41:00 GMT</pubDate><guid>http://www.blogjava.net/wguzgg/articles/49876.html</guid><wfw:comment>http://www.blogjava.net/wguzgg/comments/49876.html</wfw:comment><comments>http://www.blogjava.net/wguzgg/articles/49876.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wguzgg/comments/commentRss/49876.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wguzgg/services/trackbacks/49876.html</trackback:ping><description><![CDATA[在使用GridLayout等布局管理器的时候，对于Combo或者Text控件，可能希望手工指定其的默认宽度<br />在使用GridLayout布局管理器的时候，对于Combo或者Text控件，可能希望手工指定其的默认宽度。<br />可以为其指定GridData,并用widthHint属性来设定其宽度。<br />这里有点小问题就是，要想获得一个字符串的宽度，并没有一个简单的方法，我们不得不多写几行代码。<br /><br />Composite composite = new Composite(shell , SWT.NONE);   //新建一个容器，并使用GridLayout布局管理器<br />GridLayout gridlayout = new GridLayout();<br />composite.setLayout(gridlayout);<br />Text text = new Text(composite , SWT.SINGLE);                  //在该容器中放入一个Text控件<br />GridData griddata = new GridData();<br />text.setLayoutData(griddata);<br /><br />GC gc = new GC(shell);                                                      //利用gc.textExtend方法获得指定字符串的宽度<br />Point size = gc.textExtent (str);<br />gc.dispose();<br />griddata.widthHint = size.x;                                                //设定Text控件的宽度<img src ="http://www.blogjava.net/wguzgg/aggbug/49876.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wguzgg/" target="_blank">Rendezvous with Rama</a> 2006-06-02 10:41 <a href="http://www.blogjava.net/wguzgg/articles/49876.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>