﻿<?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-A life of continued exploration is a life worth living.-随笔分类-Simple Java</title><link>http://www.blogjava.net/wqnashqu/category/24624.html</link><description>工作日志……
&lt;!-- SiteSearch Google --&gt;
&lt;form method="get" action="http://www.google.com/custom" target="_top"&gt;
&lt;table border="0" background ="http://www.blogjava.net/images/blogjava_net/wqnashqu/yan.gif"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;
&lt;input type="hidden" name="domains" value="codesearch.google.com;www.blogjava.net;www.ibm.com"&gt;&lt;/input&gt;
&lt;label for="sbi" style="display: none"&gt;输入您的搜索字词&lt;/label&gt;
&lt;input type="text" name="q" size="26" maxlength="255" value="" id="sbi"&gt;&lt;/input&gt;
&lt;label for="sbb" style="display: none"&gt;提交搜索表单&lt;/label&gt;
&lt;input type="submit" name="sa" value="Google 搜索" id="sbb"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;input type="radio" name="sitesearch" value="" checked id="ss0"&gt;&lt;/input&gt;
&lt;label for="ss0" title="搜索网络"&gt;&lt;font size="-1" "&gt;Web&lt;/font&gt;&lt;/label&gt;&lt;/td&gt;
&lt;td&gt;
&lt;input type="radio" name="sitesearch" value="codesearch.google.com" id="ss1"&gt;&lt;/input&gt;
&lt;label for="ss1" title="搜索 codesearch.google.com"&gt;&lt;font size="-1" &gt;codesearch.google.com&lt;/font&gt;&lt;/label&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;input type="radio" name="sitesearch" value="www.blogjava.net" id="ss2"&gt;&lt;/input&gt;
&lt;label for="ss2" title="搜索 www.blogjava.net"&gt;&lt;font size="-1" &gt;www.blogjava.net&lt;/font&gt;&lt;/label&gt;&lt;/td&gt;
&lt;td&gt;
&lt;input type="radio" name="sitesearch" value="www.ibm.com" id="ss3"&gt;&lt;/input&gt;
&lt;label for="ss3" title="搜索 www.ibm.com"&gt;&lt;font size="-1" &gt;www.ibm.com&lt;/font&gt;&lt;/label&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;input type="hidden" name="client" value="pub-5842524610105352"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="GB2312"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="GB2312"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;LH:45;LW:166;L:http://www.blogjava.net/images/logo.gif;S:http://www.blogjava.net/wqnashqu;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="zh_CN"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;!-- SiteSearch Google --&gt;</description><language>zh-cn</language><lastBuildDate>Sun, 11 Nov 2007 18:20:09 GMT</lastBuildDate><pubDate>Sun, 11 Nov 2007 18:20:09 GMT</pubDate><ttl>60</ttl><item><title>Europa myeclipse matisse</title><link>http://www.blogjava.net/wqnashqu/archive/2007/11/11/159733.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Sun, 11 Nov 2007 07:11:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/11/11/159733.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/159733.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/11/11/159733.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/159733.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/159733.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 实在忍受不了sun的做事风格和它的开发工具了，nb的beta6一踏糊涂一堆bug，唉~想着就想起来sun中国弄个nb插件的比赛不仅过程糟糕，获奖了居然还不兑现承诺，到现在也杳无音信，估计是证书也不想发了，真是让大家对它越发感到没有信心~~~~~~~~~不提这个了，还是讲讲Europa 和 myeclipse， 最近在写一个基于规则的引擎，用的Europa 和myeclipse6 感觉非常舒服，myeclipse的功能也大大加强了比如改进了javaEE5 提高了EJB3开发效率可以支持从数据模型到bean的转换，java的持久化程度及其Spring-JPA的高度集成。开发ajax的朋友可以发现 myeclipse对ajax的开发和测试做的也非常好，尤其是对js的调试。Web开发的另一个特点是支持RAD web。nb原来喊的一项特色是集成了matisse，在myeclipse目前也集成了它而且对于可视化swing开发非常方便，当然你也可以自己按照，不直接更新。<br>myeclipse中集成的derby和tomcat也大大加速了服务器的连接和部署，调试等。至于db视图个人使用oracle&nbsp;&nbsp;<a href='http://www.blogjava.net/wqnashqu/archive/2007/11/11/159733.html'>阅读全文</a><img src ="http://www.blogjava.net/wqnashqu/aggbug/159733.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-11-11 15:11 <a href="http://www.blogjava.net/wqnashqu/archive/2007/11/11/159733.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts Review</title><link>http://www.blogjava.net/wqnashqu/archive/2007/10/07/150860.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Sun, 07 Oct 2007 08:55:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/10/07/150860.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/150860.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/10/07/150860.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/150860.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/150860.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 好长时间没写程序了感觉，忘了很多东西，呵呵，今天打开Eclipse写了一个Struts的小应用，也回顾了一遍它的主要内容，这篇随笔就把整理的一些东西贴出来吧。&nbsp;&nbsp;<a href='http://www.blogjava.net/wqnashqu/archive/2007/10/07/150860.html'>阅读全文</a><img src ="http://www.blogjava.net/wqnashqu/aggbug/150860.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-10-07 16:55 <a href="http://www.blogjava.net/wqnashqu/archive/2007/10/07/150860.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JFx~~~~builder</title><link>http://www.blogjava.net/wqnashqu/archive/2007/06/02/121561.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Sat, 02 Jun 2007 15:16:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/06/02/121561.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/121561.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/06/02/121561.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/121561.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/121561.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 首先说点别的:),今天google adsense给我回信关于blog头搜索不好用的原因是嵌在了<form>里。我评论的前两条是表扬google...&nbsp;&nbsp;<a href='http://www.blogjava.net/wqnashqu/archive/2007/06/02/121561.html'>阅读全文</a><img src ="http://www.blogjava.net/wqnashqu/aggbug/121561.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-06-02 23:16 <a href="http://www.blogjava.net/wqnashqu/archive/2007/06/02/121561.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JNDI~基础</title><link>http://www.blogjava.net/wqnashqu/archive/2007/05/14/117461.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Mon, 14 May 2007 15:33:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/05/14/117461.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/117461.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/05/14/117461.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/117461.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/117461.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 今天浏览网页，看见篇写JNDI比较基础，也比较详细的文章，又自己整理了一下，post到新手区了，。。。。：）JNDI是java访问名字和目录服务的接口，与JDBC一样，它仅仅只定义了一套服务接口，实现由具体厂商提供。作为j2ee核心组件之一，它为应用程序查找其他程序组件和资源提供了统一的接口，其中最常见的用途就是数据源的配置、EJB名字查找、JMS相关配置等。JNDI的架构如下图。在JDK1.3中...&nbsp;&nbsp;<a href='http://www.blogjava.net/wqnashqu/archive/2007/05/14/117461.html'>阅读全文</a><img src ="http://www.blogjava.net/wqnashqu/aggbug/117461.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-05-14 23:33 <a href="http://www.blogjava.net/wqnashqu/archive/2007/05/14/117461.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>标准字符集~</title><link>http://www.blogjava.net/wqnashqu/archive/2007/05/06/115613.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Sun, 06 May 2007 11:50:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/05/06/115613.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/115613.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/05/06/115613.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/115613.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/115613.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 今天自己突然想起来整理一下标准的charset，感觉还算有必要。当然java...&nbsp;&nbsp;<a href='http://www.blogjava.net/wqnashqu/archive/2007/05/06/115613.html'>阅读全文</a><img src ="http://www.blogjava.net/wqnashqu/aggbug/115613.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-05-06 19:50 <a href="http://www.blogjava.net/wqnashqu/archive/2007/05/06/115613.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ANT</title><link>http://www.blogjava.net/wqnashqu/archive/2007/04/19/111946.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Thu, 19 Apr 2007 06:56:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/04/19/111946.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/111946.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/04/19/111946.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/111946.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/111946.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: ANT是一个基于JAVA的自动化脚本引擎，脚本格式为XML。除了做JAVA编译相关任务外，ANT还可以通过插件实现很多应用的调用。&nbsp;&nbsp;<a href='http://www.blogjava.net/wqnashqu/archive/2007/04/19/111946.html'>阅读全文</a><img src ="http://www.blogjava.net/wqnashqu/aggbug/111946.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-04-19 14:56 <a href="http://www.blogjava.net/wqnashqu/archive/2007/04/19/111946.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ANT十五大最佳实践(转载)--o'reilly</title><link>http://www.blogjava.net/wqnashqu/archive/2007/04/19/111941.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Thu, 19 Apr 2007 06:45:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/04/19/111941.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/111941.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/04/19/111941.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/111941.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/111941.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在Ant出现之前，构建和部署Java应用需要使用包括特定平台的脚本、Make文件、各种版本的IDE甚至手工操作的“大杂烩”。现在，几乎所有的开源 Java项目都在使用Ant，大多数公司的内部项目也在使用Ant。Ant在这些项目中的广泛使用自然导致了读者对一整套Ant最佳实践的迫切需求。&nbsp;&nbsp;<a href='http://www.blogjava.net/wqnashqu/archive/2007/04/19/111941.html'>阅读全文</a><img src ="http://www.blogjava.net/wqnashqu/aggbug/111941.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-04-19 14:45 <a href="http://www.blogjava.net/wqnashqu/archive/2007/04/19/111941.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用google api写的小程序　</title><link>http://www.blogjava.net/wqnashqu/archive/2007/04/14/110645.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Sat, 14 Apr 2007 07:22:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/04/14/110645.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/110645.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/04/14/110645.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/110645.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/110645.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 昨晚同学找我帮忙写一个利用GOOGLE API的小程序，也比较感兴趣所以就应下了。下载了GOOGLE提供的googleapi.jar，大约花了２０多分钟，写了这个小程序，由于需要提供GOOGLE key所以也懒得去申请，就没有测试～～呵呵&nbsp;&nbsp;<a href='http://www.blogjava.net/wqnashqu/archive/2007/04/14/110645.html'>阅读全文</a><img src ="http://www.blogjava.net/wqnashqu/aggbug/110645.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-04-14 15:22 <a href="http://www.blogjava.net/wqnashqu/archive/2007/04/14/110645.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java与元数据</title><link>http://www.blogjava.net/wqnashqu/archive/2007/04/12/110302.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Thu, 12 Apr 2007 15:58:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/04/12/110302.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/110302.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/04/12/110302.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/110302.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/110302.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 元数据是利用JDBC创建和操作数据库对象的一个很重要的概念和应用，所以今天我特地的找了一些详细解析个概念的资料，和利用java来操作的实例。&nbsp;&nbsp;<a href='http://www.blogjava.net/wqnashqu/archive/2007/04/12/110302.html'>阅读全文</a><img src ="http://www.blogjava.net/wqnashqu/aggbug/110302.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-04-12 23:58 <a href="http://www.blogjava.net/wqnashqu/archive/2007/04/12/110302.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java.security</title><link>http://www.blogjava.net/wqnashqu/archive/2007/04/11/109936.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Wed, 11 Apr 2007 08:35:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/04/11/109936.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/109936.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/04/11/109936.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/109936.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/109936.html</trackback:ping><description><![CDATA[出于java的安全限制，System.getProperty("line.seperator")是不能够直接取得的。可以这样做：<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">String&nbsp;lineSeparator&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(String)&nbsp;java.security.AccessController.doPrivileged(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;sun.security.action.GetPropertyAction(</span><span style="color: #000000;">"</span><span style="color: #000000;">line.separator</span><span style="color: #000000;">"</span><span style="color: #000000;">));</span></div>
具体参考java.io.BufferedWriter的源代码就可以找到上面这行代码。 DriverManager里也有<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;">&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;">void</span><span style="color: #000000;">&nbsp;loadInitialDrivers()&nbsp;{<br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;drivers;<br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">&nbsp;{<br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;drivers&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(String)&nbsp;java.security.AccessController<br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.doPrivileged(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;sun.security.action.GetPropertyAction(<br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&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;</span><span style="color: #000000;">"</span><span style="color: #000000;">jdbc.drivers</span><span style="color: #000000;">"</span><span style="color: #000000;">));<br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(Exception&nbsp;ex)&nbsp;{<br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;drivers&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;println(</span><span style="color: #000000;">"</span><span style="color: #000000;">DriverManager.initialize:&nbsp;jdbc.drivers&nbsp;=&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;drivers);<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(drivers&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></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;<br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(drivers.length()&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;{<br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&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;drivers.indexOf(</span><span style="color: #000000;">'</span><span style="color: #000000;">:</span><span style="color: #000000;">'</span><span style="color: #000000;">);<br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;driver;<br></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;">)&nbsp;{<br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;driver&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;drivers;<br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;drivers&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">""</span><span style="color: #000000;">;<br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&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></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;driver&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;drivers.substring(</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;x);<br></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;drivers&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;drivers.substring(x&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br></span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(driver.length()&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;{<br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;<br></span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">&nbsp;{<br></span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;println(</span><span style="color: #000000;">"</span><span style="color: #000000;">DriverManager.Initialize:&nbsp;loading&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;driver);<br></span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class.forName(driver,&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">,&nbsp;ClassLoader.getSystemClassLoader());<br></span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(Exception&nbsp;ex)&nbsp;{<br></span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;println(</span><span style="color: #000000;">"</span><span style="color: #000000;">DriverManager.Initialize:&nbsp;load&nbsp;failed:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;ex);<br></span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
sun.security.action.GetPropertyAction() hasn't been publiced.actually and exactly,it's not be doced,which reflects that sun doesn't surport us to use these class or method which is lower class,usually, we use the classes api tells us is proier and maybe has called these undoc class&nbsp; but usually for us ,it's not necessary.so in the program of us or even others ,we could and i think it's really better for us to <big><font face="Trebuchet ms" size="2">neglect&nbsp; them</font></big> which u can find out in the jar file of rt.jar.<br><br>   <img src ="http://www.blogjava.net/wqnashqu/aggbug/109936.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-04-11 16:35 <a href="http://www.blogjava.net/wqnashqu/archive/2007/04/11/109936.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java性能优化（摘录）</title><link>http://www.blogjava.net/wqnashqu/archive/2007/04/09/109345.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Mon, 09 Apr 2007 03:12:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/04/09/109345.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/109345.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/04/09/109345.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/109345.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/109345.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 可供程序利用的资源（内存、CPU时间、网络带宽等）是有限的，优化的目的就是让程序用尽可能少的资源完成预定的任务。优化通常包含两方面的内容：减小代码的体积，提高代码的运行效率。本文讨论的主要是如何提高代码的效率。&nbsp;&nbsp;<a href='http://www.blogjava.net/wqnashqu/archive/2007/04/09/109345.html'>阅读全文</a><img src ="http://www.blogjava.net/wqnashqu/aggbug/109345.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-04-09 11:12 <a href="http://www.blogjava.net/wqnashqu/archive/2007/04/09/109345.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA ONLINE项目</title><link>http://www.blogjava.net/wqnashqu/archive/2007/04/09/109342.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Mon, 09 Apr 2007 03:06:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/04/09/109342.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/109342.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/04/09/109342.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/109342.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/109342.html</trackback:ping><description><![CDATA[1.变量引用的时候,空指针情况的防止,即为空检查.
<br>2.数学运算异常,如除0的情况.数组越界异常,字符串访问过界
<br>3.数据库检索记录,结果记录行数状况的处理.
<br>4.画面显示项目的确认.
<br>5.画面显示项目达到上限时情况的处理.
<br>6.系统出错的时候,异常信息是否正确.
<br>7.数据库连接,游标的处理.
<br>8.数学运算时,数据精度的处理.
<br> <img src ="http://www.blogjava.net/wqnashqu/aggbug/109342.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-04-09 11:06 <a href="http://www.blogjava.net/wqnashqu/archive/2007/04/09/109342.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JNDI</title><link>http://www.blogjava.net/wqnashqu/archive/2007/04/08/109234.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Sun, 08 Apr 2007 07:10:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/04/08/109234.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/109234.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/04/08/109234.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/109234.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/109234.html</trackback:ping><description><![CDATA[Today with tomcat admin, a Graphic interface for us to config the JNDI for our program,I configured the context and connection pool jioning IBM DB2 ExC-9.Actually,JNDI is an API specified in Java technology that provides naming and
directory functionality to applications written in the Java programming
language. It is designed especially for the Java platform using Java's
object model. Using JNDI, applications based on Java technology can
store and retrieve named Java objects of any type. In addition, JNDI
provides methods for performing standard directory operations, such as
associating attributes with objects and searching for objects using
their attributes (Name-Value,context).JNDI is also defined independent of any specific naming or directory
service implementation. It enables applications to access different,
possibly multiple, naming and directory services using a common API.
Different naming and directory service providers can be plugged in
seamlessly behind this common API. This enables Java technology-based
applications to take advantage of information in a variety of existing
naming and directory services, such as LDAP, NDS, DNS, and NIS(YP), as
well as enabling the applications to coexist with legacy software and
systems. Using JNDI as a tool, we can build new powerful and portable
applications that not only take advantage of Java's object model but
are also well-integrated with the environment in which they are
deployed.<br>
A directory is typically used to associate attributes with objects.
A person object, for example, can have a number of attributes, such as
the person's surname, fisrtName,telephone numbers, electronic mail address and so on.  Using JNDI, to retrieve the
email address of a person object, the code looks as follows.<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">1</span>&nbsp;<span style="color: #000000;">Attribute&nbsp;personAttribute</span><span style="color: #000000;">=</span><span style="color: #000000;">directory.getAttributes(personName).get(</span><span style="color: #000000;">"</span><span style="color: #000000;">email</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;">String&nbsp;email&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(String)personAttribute.get();</span></div>
(Recently,finding that blogjava can help us format our code,that's perfect,but if can max the editor area which will enhance the function and coursely be better:).)<br>An intuitive model for the Java programmer is to be able to lookup
objects like printers and databases from the naming/directory service.
Using JNDI, to lookup a printer object, the code looks as follows.
(it's important and most used)	<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">1</span> <span style="color: #000000;">Printer&nbsp;printer&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">(Printer)namespace.lookup(printerName);<br></span><span style="color: #008080;">2</span> <span style="color: #000000;"></span><span style="color: #000000;">printer.print(document);</span></div>
<img style="width: 472px; height: 353px;" alt="" src="http://www.blogjava.net/images/blogjava_net/wqnashqu/TomcatJNDI.JPG"><br>    <img src ="http://www.blogjava.net/wqnashqu/aggbug/109234.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-04-08 15:10 <a href="http://www.blogjava.net/wqnashqu/archive/2007/04/08/109234.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Write a Log &amp;&amp; Use the Properties</title><link>http://www.blogjava.net/wqnashqu/archive/2007/04/05/108613.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Thu, 05 Apr 2007 02:01:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/04/05/108613.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/108613.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/04/05/108613.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/108613.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/108613.html</trackback:ping><description><![CDATA[<p>//*******************The Log class<br>import java.io.BufferedWriter;<br>import java.io.File;<br>import java.io.FileWriter;<br>import java.io.IOException;<br>import java.uitl.Date;<br>import java.text.DateFormat;</p>
<p>public class Log{<br>&nbsp;&nbsp; private static final String filePath = PropertyReader.getResource("Log_File_Path");//Supposing we have define in the last ProperyReader class and the file<br>&nbsp;&nbsp; <br>&nbsp;&nbsp; public static final String EXCEPTION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;=&nbsp; &nbsp;"Exception";<br>&nbsp;&nbsp; public static final String CREATE_STAFF&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp;=&nbsp;&nbsp; "Create Staff";<br>&nbsp;&nbsp; public static final String EDIT_STAFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp; "Edit Staff";<br>&nbsp;&nbsp; public static final String DELETE_STAFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp; "Delete Staff";<br>&nbsp;&nbsp; public static final String RECORD_HAS_EXIST&nbsp;&nbsp;=&nbsp; &nbsp;"Record Has Exist";</p>
<p>&nbsp;&nbsp; public static void log(String msg_type, Exception e){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StringBuffer errMsg = new StringBuffer(e.toString);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;e.getStackTrace().length;i++){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errMsg.append("\n\t at");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errMsg.append(e.getStackTrace()[i].toString);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log(msg_type,errMsg.toString());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OptionPanel.showErrMsg("Sorry,System may have an error \n System will exit");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.exit(-1);<br>&nbsp;&nbsp; }</p>
<p>&nbsp; public static void log(String msg.type,Staff staff){<br>&nbsp;&nbsp;&nbsp;&nbsp; String msg = null;<br>&nbsp;&nbsp;&nbsp;&nbsp; if(msg_type == CREATE_STAFF){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg = staff.toString() + "has benn created";<br>&nbsp;&nbsp;&nbsp;&nbsp; }else if(msg_type == EDIT_STAFF){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg = staff.toString() + "has been Changed";<br>&nbsp;&nbsp;&nbsp;&nbsp; }else if(msg_type == DELETE_STAFF){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg = staff.toString() + "has been Deleted";<br>&nbsp;&nbsp;&nbsp;&nbsp; }else if(msg_type == RECORD_HAS_EXIST){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg = staff.toString() + "has exist in the database"; <br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; log(msg_type,msg);<br>&nbsp; }</p>
<p>&nbsp; private static void log(String msg_type,String msg){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedWriter out = null;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out = new BufferedWriter(new FileWriter(getLogFilePath(),true));//如果为 true，则将字节写入文件末尾处，而不是写入文件开始处<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.write("["+df.format(new Date()) + "] &lt;" + msg_type + "&gt; :" + msg);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.newline();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.newline();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch(IOException e){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }finally{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(out!=null){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.close();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch(IOException e){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp; }</p>
<p>&nbsp; private static String getLogFilePath(){<br>&nbsp;&nbsp;&nbsp;&nbsp; File logDir = new File(filePath);<br>&nbsp;&nbsp;&nbsp;&nbsp; if(!logDir.exists()){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logDir.mkdir();<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; int i = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp; String fileName = filePath + "log_";<br>&nbsp;&nbsp;&nbsp;&nbsp; File file = new File(fileName + i + ".txt");<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; while(file.exists() &amp;&amp; file.length() &gt; 30000L) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file = new File(fileName + i + ".txt");<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return fileName + i + ".txt"<br>&nbsp; }<br>}</p>
<p>//*****************************The OptionPanel Dialog Class for the Log Class<br>import javax.swing.JOptionPane;</p>
<p>public class OptionPanel {<br>&nbsp;&nbsp; private static final String appTitle = PropertyReader.getResource("App_Title");//suposing the file has been established and the property app-title stands for the name of application<br>&nbsp;&nbsp; private static final MainFrame frame = MainFrame.getMainFrame();</p>
<p>&nbsp;&nbsp; public static void showWarningMsg(String msg){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JOptionPane.showMessageDialog(frame,msg,appTitle,JOptionPane.WARNING_MESSAGE);<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; public static void showErrMsg(String msg){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JOptionPane.showMessageDialog(frame,msg,appTitle,JOptionPane.Error_MESSAGE);<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; public static int showConfirmMsg(String msg){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return JOptionPane.showConfirmDialog(frame,msg,appTitle,JOptionPane.YES_NO_OPTON,JOptionPane.QUESTION_MESSAGE);<br>&nbsp;&nbsp; }<br>}</p><img src ="http://www.blogjava.net/wqnashqu/aggbug/108613.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-04-05 10:01 <a href="http://www.blogjava.net/wqnashqu/archive/2007/04/05/108613.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>A class to read the Properties</title><link>http://www.blogjava.net/wqnashqu/archive/2007/04/05/108572.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Thu, 05 Apr 2007 00:13:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/04/05/108572.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/108572.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/04/05/108572.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/108572.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/108572.html</trackback:ping><description><![CDATA[<p>In a project, we can write a class to read the properties.As following,<br><br>import java.io.InputStream;<br>import java.io.IOException;<br>import java.util.Properties;</p>
<p>public class PropertyReader{<br>&nbsp;&nbsp; private static Properties property = null;<br>&nbsp;&nbsp; <br>&nbsp;&nbsp; static{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InputSteam stream = null;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stream=PropertyReader.class.getResourceAsStream("/resource/properties.properties");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; property = new Properties();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; property.load(stream);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch(IOException e){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }finally{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(stream != null){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stream.close();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch(IOException e){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; public static String getResource(String key){<br>&nbsp;&nbsp;&nbsp;&nbsp; if(property == null){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;// init error;<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; return property.getProperty(key);<br>&nbsp;&nbsp; }<br>}</p><img src ="http://www.blogjava.net/wqnashqu/aggbug/108572.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-04-05 08:13 <a href="http://www.blogjava.net/wqnashqu/archive/2007/04/05/108572.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Properties</title><link>http://www.blogjava.net/wqnashqu/archive/2007/04/04/108533.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Wed, 04 Apr 2007 13:32:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/04/04/108533.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/108533.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/04/04/108533.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/108533.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/108533.html</trackback:ping><description><![CDATA[These days I want to review some java classes and post them,cos i come to realize that i hava been coming to forget some of them, my god,Katrina,....:) it's really the sound,and u ? ...regarding MVC,cos be delayed, and may be will better.<br><br>List a class to use the title Properties.<br><br>import java.util.Properties;<br>import java.io.FileInputStream;<br>import java.io.FileOutputStream;<br>import java.io.FileNotFoundException;<br>import java.io.IOException;<br><br>public class FirstDayTestProperties {<br>&nbsp;&nbsp; public static void main(String[] args) throws Exception{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Properties ProTest = new Properties();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String&nbsp; fileName="PropertiesTest.properties";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp; &nbsp; &nbsp;&nbsp; try{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProTest.setProperty("lastDir","C:\\PropertyTest");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProTest.store(new FileOutputStream(fileName),null);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch(IOException e){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileInputStream inStream=new FileInputStream(fileName);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProTest.load(inStream);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProTest.list(System.out);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch(FileNotFoundException e){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp; }<br>}<br>The class I just write now without any testing,but i think it seems no errors:).Share.<br><br> <img src ="http://www.blogjava.net/wqnashqu/aggbug/108533.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-04-04 21:32 <a href="http://www.blogjava.net/wqnashqu/archive/2007/04/04/108533.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>The JS route. 2nd  function area</title><link>http://www.blogjava.net/wqnashqu/archive/2007/02/15/100013.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Thu, 15 Feb 2007 15:36:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/02/15/100013.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/100013.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/02/15/100013.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/100013.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/100013.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: This post had been writen long before,...but&nbsp;&nbsp;<a href='http://www.blogjava.net/wqnashqu/archive/2007/02/15/100013.html'>阅读全文</a><img src ="http://www.blogjava.net/wqnashqu/aggbug/100013.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-02-15 23:36 <a href="http://www.blogjava.net/wqnashqu/archive/2007/02/15/100013.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Drag a JS</title><link>http://www.blogjava.net/wqnashqu/archive/2007/01/29/96512.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Mon, 29 Jan 2007 06:42:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/01/29/96512.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/96512.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/01/29/96512.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/96512.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/96512.html</trackback:ping><description><![CDATA[&lt;html&gt;<br>&lt;head&gt;<br>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br>&lt;title&gt;拖拽Demo&lt;/title&gt;<br>&lt;style type="text/CSS"&gt;<br>body<br><br>{<br><br>&nbsp;&nbsp;&nbsp; margin:0px;<br><br>}<br><br>&nbsp;<br><br>#aim <br><br>{<br><br>&nbsp;&nbsp;&nbsp; position:absolute;<br><br>&nbsp;&nbsp;&nbsp; width:200px;<br><br>&nbsp;&nbsp;&nbsp; height:30px;<br><br>&nbsp;&nbsp;&nbsp; border:1px solid #666666;<br><br>&nbsp;&nbsp;&nbsp; background-color:#FFCCCC;<br><br>}<br><br>&nbsp;<br><br>#sourceLayer, #cloneLayer<br><br>{<br><br>&nbsp;&nbsp;&nbsp; position:absolute;<br><br>&nbsp;&nbsp;&nbsp; width:300px;<br><br>&nbsp;&nbsp;&nbsp; height:50px;<br><br>&nbsp;&nbsp;&nbsp; border:1px solid #666666;<br><br>&nbsp;&nbsp;&nbsp; background-color:#CCCCCC;<br><br>&nbsp;&nbsp;&nbsp; cursor:move;<br><br>}<br><br>&nbsp;<br><br>.docked<br><br>{<br><br>&nbsp;&nbsp;&nbsp; display:none;<br><br>&nbsp;&nbsp;&nbsp; filter:alpha(opacity=100);<br><br>}<br><br>&nbsp;<br><br>.actived<br><br>{<br><br>&nbsp;&nbsp;&nbsp; display:block;<br><br>&nbsp;&nbsp;&nbsp; filter:alpha(opacity=70);<br><br>}<br><br>&lt;/style&gt;<br><br>&lt;/head&gt;<br><br>&nbsp;<br><br>&lt;body &gt;<br><br>&nbsp;<br><br>&lt;div id="aim"&gt;locate&lt;/div&gt;<br><br>&lt;div id="sourceLayer" unselectable="off"&gt;&lt;img src="http://www.baidu.com/img/logo.gif" alt="Drag Demo"&gt;Source of the demo&lt;/div&gt;<br><br>&lt;div id="cloneLayer" class="docked" unselectable="off"&gt;&lt;/div&gt;<br><br><br>&lt;script type="text/javascript" language="javascript"&gt;<br><br><br>var aim;<br><br>var sourceLayer;<br><br>var cloneLayer;<br><br>var aimX;<br><br>var aimY;<br><br>var orgnX;<br><br>var orgnY;<br><br>var draging = false; <br><br>var offsetX = 0;&nbsp;&nbsp;&nbsp;&nbsp; <br><br>var offsetY = 0;&nbsp;&nbsp;&nbsp;&nbsp; <br><br>var back;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br><br>var thisX ;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br><br>var thisY ;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br><br>var time ;<br><br>var stepX ;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br><br>var stepY ;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br><br><br><br>&nbsp;<br><br>function getLayer(inAim,inSource,inClone)<br><br>{<br><br>&nbsp;&nbsp;&nbsp; aim = document.getElementById(inAim);<br><br>&nbsp;&nbsp;&nbsp; sourceLayer = document.getElementById(inSource);<br><br>&nbsp;&nbsp;&nbsp; cloneLayer = document.getElementById(inClone);<br><br>}<br><br>&nbsp;<br><br>function initDrag(initAimX,initAimY,initOrgnX,initOrgnY)<br><br>{<br><br>&nbsp;&nbsp;&nbsp; aimX = initAimX;<br><br>&nbsp;&nbsp;&nbsp; aimY = initAimY;<br><br>&nbsp;&nbsp;&nbsp; orgnX = initOrgnX;<br><br>&nbsp;&nbsp;&nbsp; orgnY = initOrgnY;<br><br>&nbsp;&nbsp;&nbsp; aim.style.pixelLeft = aimX;<br><br>&nbsp;&nbsp;&nbsp; aim.style.pixelTop = aimY;<br><br>&nbsp;&nbsp;&nbsp; sourceLayer.style.pixelLeft = orgnX;<br><br>&nbsp;&nbsp;&nbsp; sourceLayer.style.pixelTop = orgnY;<br><br>&nbsp;&nbsp;&nbsp; cloneLayer.style.pixelLeft = orgnX;<br><br>&nbsp;&nbsp;&nbsp; cloneLayer.style.pixelTop = orgnY;<br><br>}<br><br><br>function BeforeDrag()<br><br>{<br><br>&nbsp;&nbsp;&nbsp; if (event.button != 1)<br><br>&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br><br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; cloneLayer.innerHTML = sourceLayer.innerHTML; 容<br><br>&nbsp;&nbsp;&nbsp; offsetX = document.body.scrollLeft + event.clientX - sourceLayer.style.pixelLeft;<br><br>&nbsp;&nbsp;&nbsp; offsetY = document.body.scrollTop + event.clientY - sourceLayer.style.pixelTop;<br><br>&nbsp;&nbsp;&nbsp; cloneLayer.className = "actived";<br><br>&nbsp;&nbsp;&nbsp; draging = true;<br><br>}<br><br><br><br>function OnDrag()<br><br>{<br><br>&nbsp;&nbsp;&nbsp; if(!draging)<br><br>&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br><br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; event.returnValue = false;<br><br>&nbsp;&nbsp;&nbsp; cloneLayer.style.pixelLeft = document.body.scrollLeft + event.clientX - offsetX;<br><br>&nbsp;&nbsp;&nbsp; cloneLayer.style.pixelTop = document.body.scrollTop + event.clientY - offsetY;<br><br>}<br><br>function EndDrag()<br><br>{<br><br>&nbsp;&nbsp;&nbsp; if (event.button != 1)<br><br>&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br><br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; draging = false;<br><br>&nbsp;<br><br>&nbsp;&nbsp;&nbsp; if (event.clientX &gt;= aim.style.pixelLeft &amp;&amp; event.clientX &lt;= (aim.style.pixelLeft + aim.offsetWidth) &amp;&amp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; event.clientY &gt;= aim.style.pixelTop &amp;&amp; event.clientY &lt;= (aim.style.pixelTop + aim.offsetHeight))<br><br>&nbsp;&nbsp;&nbsp; {<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sourceLayer.style.pixelLeft = aim.style.pixelLeft;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sourceLayer.style.pixelTop = aim.style.pixelTop;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cloneLayer.className = "docked";<br><br><br><br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; else<br><br>&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp; thisX = cloneLayer.style.pixelLeft;<br><br>&nbsp;&nbsp;&nbsp;&nbsp; thisY = cloneLayer.style.pixelTop;<br><br>&nbsp;&nbsp;&nbsp;&nbsp; offSetX = Math.abs(thisX - orgnX);<br><br>&nbsp;&nbsp;&nbsp;&nbsp; offSetY = Math.abs(thisY - orgnY);<br><br>&nbsp;&nbsp;&nbsp;&nbsp; time = 500;<br><br>&nbsp;&nbsp;&nbsp;&nbsp; stepX = Math.floor((offSetX/time)*20);<br><br>&nbsp;&nbsp;&nbsp;&nbsp; stepY = Math.floor((offSetY/time)*20);<br><br>&nbsp;&nbsp;&nbsp;&nbsp; if(stepX == 0)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stepX = 2;<br><br>&nbsp;&nbsp;&nbsp;&nbsp; if(stepY == 0)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stepY = 2;<br><br>&nbsp;&nbsp;&nbsp;&nbsp; moveStart();<br><br>&nbsp;&nbsp;&nbsp; }&nbsp; &nbsp;<br><br>}<br><br>&nbsp;<br><br>&nbsp;<br><br>function moveStart()<br><br>{<br><br>&nbsp;&nbsp;&nbsp;&nbsp; back = setInterval("MoveLayer();",15);<br><br>}<br><br>&nbsp;<br><br>function MoveLayer()<br><br>{<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp; if(cloneLayer.style.pixelLeft &lt;= orgnX &amp;&amp; cloneLayer.style.pixelTop &lt;= orgnY)<br><br>&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cloneLayer.style.pixelLeft += stepX;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cloneLayer.style.pixelTop += stepY;<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cloneLayer.style.pixelLeft &gt; orgnX)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stepX = 1;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cloneLayer.style.pixelTop &gt; orgnY)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stepY = 1;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //if the coordinate of X Y&nbsp; are&nbsp; same <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cloneLayer.style.pixelLeft == orgnX)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stepX = 0;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cloneLayer.style.pixelTop == orgnY)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stepY = 0;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cloneLayer.style.pixelLeft == orgnX &amp;&amp; cloneLayer.style.pixelTop == orgnY)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EndMove();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp; &nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp; //locate to the downleft of the object <br><br>&nbsp;&nbsp;&nbsp;&nbsp; else if(cloneLayer.style.pixelLeft &lt;= orgnX &amp;&amp; cloneLayer.style.pixelTop &gt;= orgnY)<br><br>&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cloneLayer.style.pixelLeft += stepX;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cloneLayer.style.pixelTop -= stepY;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cloneLayer.style.pixelLeft &gt; orgnX)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stepX = 1;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cloneLayer.style.pixelTop &lt; orgnY)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stepY = 1;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cloneLayer.style.pixelLeft == orgnX)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stepX = 0;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cloneLayer.style.pixelTop == orgnY)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stepY = 0;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cloneLayer.style.pixelLeft == orgnX &amp;&amp; cloneLayer.style.pixelTop == orgnY)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EndMove();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp; }<br><br><br><br>&nbsp;&nbsp;&nbsp;&nbsp; else if(cloneLayer.style.pixelLeft &gt;= orgnX &amp;&amp; cloneLayer.style.pixelTop &lt;= orgnY)<br><br>&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cloneLayer.style.pixelLeft -= stepX;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cloneLayer.style.pixelTop += stepY;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cloneLayer.style.pixelLeft &lt; orgnX)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stepX = 1;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cloneLayer.style.pixelTop &gt; orgnY)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stepY = 1;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cloneLayer.style.pixelLeft == orgnX)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stepX = 0;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cloneLayer.style.pixelTop == orgnY)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stepY = 0;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cloneLayer.style.pixelLeft == orgnX &amp;&amp; cloneLayer.style.pixelTop == orgnY)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EndMove();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp; &nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp; //locate to the right of the object<br><br>&nbsp;&nbsp;&nbsp;&nbsp; else if(cloneLayer.style.pixelLeft &gt;= orgnX &amp;&amp; cloneLayer.style.pixelTop &gt;= orgnY)<br><br>&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cloneLayer.style.pixelLeft -= stepX;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cloneLayer.style.pixelTop -= stepY;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cloneLayer.style.pixelLeft &lt; orgnX)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stepX = 1;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cloneLayer.style.pixelTop &lt; orgnY)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stepY = 1;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cloneLayer.style.pixelLeft == orgnX)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stepX = 0;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cloneLayer.style.pixelTop == orgnY)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stepY = 0;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cloneLayer.style.pixelLeft == orgnX &amp;&amp; cloneLayer.style.pixelTop == orgnY)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EndMove();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp; &nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp; //to the design<br><br>&nbsp;&nbsp;&nbsp;&nbsp; else<br><br>&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EndMove();<br><br>&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>}<br><br>&nbsp;<br><br>//stop and then back to the state ()carton<br><br>function EndMove()<br><br>{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sourceLayer.style.pixelLeft = orgnX;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sourceLayer.style.pixelTop = orgnY;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cloneLayer.style.pixelLeft = orgnX;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cloneLayer.style.pixelTop = orgnY;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cloneLayer.className = "docked";<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clearInterval(back);<br><br>}<br><br>&nbsp;<br><br>//Main function of this demo<br><br>function startDraging(inAim,inSource,inClone,initAimX,initAimY,initOrgnX,initOrgnY)<br><br>{<br><br>&nbsp;&nbsp;&nbsp; getLayer(inAim,inSource,inClone)<br><br>&nbsp;&nbsp;&nbsp; initDrag(initAimX,initAimY,initOrgnX,initOrgnY);<br><br>&nbsp;&nbsp;&nbsp; sourceLayer.onmousedown = BeforeDrag;<br><br>&nbsp;&nbsp;&nbsp; document.onmousemove = OnDrag; //if we use cloneLayer,then the content will be draged ,and well a bug<br><br>&nbsp;&nbsp;&nbsp; cloneLayer.onmouseup = EndDrag;&nbsp; &nbsp;<br><br>}<br><br>&nbsp;<br><br>//transfer<br><br>startDraging("aim","sourceLayer","cloneLayer",600,500,50,50);<br><br>//--&gt;<br><br>&lt;/script&gt;<br><br>&lt;/body&gt;<br><br>&lt;/html&gt; <img src ="http://www.blogjava.net/wqnashqu/aggbug/96512.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-01-29 14:42 <a href="http://www.blogjava.net/wqnashqu/archive/2007/01/29/96512.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>The JS route.1st-object orientation</title><link>http://www.blogjava.net/wqnashqu/archive/2007/01/27/96328.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Sat, 27 Jan 2007 15:17:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/01/27/96328.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/96328.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/01/27/96328.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/96328.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/96328.html</trackback:ping><description><![CDATA[As beginning,still don't know how to begin this post~but really should begin to write something about tech.Sometimes some one like to talk that A good bazoo can <br>make a good bussiness card~,may be so,may be not,I really want to throw it away,but cannot,just can to learn and write ...off topics...<br>&nbsp; From now I propose to write a route about js tech with my learning steps.Ajax is a good thing maybe the world just like it some good but really short. Js is called for the full JavaScriptlanguage,it's welcomed because it can be run at the piont of client and also effective.when we talk about java object orientation is the focus piont which attracts our attention.we can define a class and then a function.But to JS ,when we create a function and make a instance of this function,we just regard it as a class,so we may say a newable function was a class.The class may have its own attributes or methods,but now we can use the sign["~"]to quote it(refer to).<br>Now I give a simple example about this <br><img src="http://www.blogjava.net/images/blogjava_net/wqnashqu/%7B449D36E0-28B6-4914-B96E-37606AA5E247%7D.BMP" alt="{449D36E0-28B6-4914-B96E-37606AA5E247}.BMP" border="0" height="78" width="220"><br>Of course,u can express with arr.push("Eric").After this,I want to say,we can insert,update &amp; delete attributes or methods when we need.As following<br>user.name="Eric";<br>user.age="21";<br>user.sex="male";<br>//we insert 3 Atts/<br>user.show=function(){<br>&nbsp; alert("Name is"+this.name);<br>}<br>//we insert 1 Mes/<br>delete is very very easy,a old story.. we use undefined<br>user.name=undefined;<br>user.show=undefined;<br>//....<br>This is js today's post,easiness goes,.~ ..<br> <img src ="http://www.blogjava.net/wqnashqu/aggbug/96328.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-01-27 23:17 <a href="http://www.blogjava.net/wqnashqu/archive/2007/01/27/96328.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>I/O</title><link>http://www.blogjava.net/wqnashqu/archive/2006/12/04/85334.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Mon, 04 Dec 2006 05:27:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2006/12/04/85334.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/85334.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2006/12/04/85334.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/85334.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/85334.html</trackback:ping><description><![CDATA[<div>
java的i/o恐怕是java体系里最复杂的内容之一了，有时候这个之一可以去了。不像c语言一个fopen()就可以解决一大堆问题。到了java
呢，又是stream又是reader,读一个文件的方式不下十种，造成很多人因此而放弃了java，当初刚学java的时候班里很多人都对java有很
高的热情，可到了现在，不知道还有多少人坚持下来了。具有讽刺意味的事java
i/o的设计者的初衷是让i/o变得简单一点，哪知道若干年后，弄出这么一大摊子来。现在又加了一个nio----就是newio，不知道日后还会弄出什
么东西来。</div>
<div>&nbsp;</div>
<div>
用i/o可以解决文件，网络通讯等几乎所io问题。功能强大，唯一的缺点就是复杂。但仔细一分析，还是有门路可走的。整个io体系主要分为两大门派。一派
为流类也就是用于字节的InputStream和OutputStream，另一派为用于字符的Reader和Writer派(简称rw派)。认清了这两
派就知道*Stream的东东全都是流派的，不是继承而来就是通过实现接口而来。如此，*Reader,*Writer那就是出身于rw派了。还有一个
File派来处理文件创建，删除，修改，属性问题。对文件的内容进行操作不是他的工作。搞清楚这两大派一小派那么解决io指日可待。</div>
<div>&nbsp;</div>
<div>
<strong>那么说了这么多怎么创建文件呢？举例说明（主函数就不写了）</strong>
</div>
<div>File newfile = new File("text.txt");</div>
<div>newfile.createNewFile();</div>
<div>
<strong>这样就在同一个文件夹下创建了一个名为text.txt的文本文件，那枚怎么删除呢？</strong>
</div>
<div>File newfile = new File("text.txt");</div>
<div>newfile.delete();</div>
<div>
<strong>这样就把这个文件删除了。是不是很简单呢。那么怎么把文件写入这个文本文件呢？</strong>
</div>
<div>File writetext = new File("text.txt");</div>
<div>
[readtext.createNewFile();]//可有可无，因为文件不存在的话，会自动创建<br>
FileWriter fw = new FileWriter(writetext);//就像创建打印机<br>
PrintWriter pw = new PrintWriter(fw);//这个呢打印针头了。</div>
<div>pw.println("this is a new file for
read");//这个是说，把这些东西给我写进去吧</div>
<div>fw.close();//然后关闭打印机</div>
<div>
<strong>有点复杂，当懂了以后，也就感觉不到什么了，那么如何读取这个文本文件呢？</strong>
</div>
<div>File readtext = new File("text.txt");</div>
<div>FileReader fr = new FileReaer(readtext);//创建一个扫描仪</div>
<div>BufferedReader br = new
BufferedReader(fr);//这是扫描仪内的缓存</div>
<div>String content =
br.readLine();&nbsp;//读一行文本</div>
<div>&nbsp;</div>
<div>用熟练了之后可以这么写：</div>
<div>BufferedReader in = new BufferedReader(new
FileReader("text.txt");</div>
<div>String content="";</div>
<div>while((content=in.readLine())!=null){</div>
<div>
&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(content);//读一行输出一行</div>
<div>}</div><img src ="http://www.blogjava.net/wqnashqu/aggbug/85334.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2006-12-04 13:27 <a href="http://www.blogjava.net/wqnashqu/archive/2006/12/04/85334.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java2exe(下载)</title><link>http://www.blogjava.net/wqnashqu/archive/2006/12/04/85330.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Mon, 04 Dec 2006 05:18:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2006/12/04/85330.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/85330.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2006/12/04/85330.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/85330.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/85330.html</trackback:ping><description><![CDATA[jar2exe是国产软件，看来这方面的需求还是很旺盛的。点击<a href="http://www.regexlab.com/download/?/jar2exe/j2e_free.zip" target="_blank">这里</a>下载。
<div>过程极为简单，第一步</div>
<div><img src="http://www.regexlab.com/jar2exe/images/zh_step1.gif" border="0" height="310" width="441"></div>
<div>第二步，选择应用程序类型</div>
<div><img src="http://www.regexlab.com/jar2exe/images/zh_step2.gif" border="0" height="310" width="441"></div>
<p>第三步，输入启动类。输入带有 main 方法的类名</p>
<p><img src="http://www.regexlab.com/jar2exe/images/zh_step3.gif" border="0" height="310" width="441"></p>
第四步，输入要生成的 Exe 文件名：
<p><img src="http://www.regexlab.com/jar2exe/images/zh_step4.gif" border="0" height="310" width="441"></p><img src ="http://www.blogjava.net/wqnashqu/aggbug/85330.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2006-12-04 13:18 <a href="http://www.blogjava.net/wqnashqu/archive/2006/12/04/85330.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>正则表达式</title><link>http://www.blogjava.net/wqnashqu/archive/2006/12/04/85329.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Mon, 04 Dec 2006 05:16:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2006/12/04/85329.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/85329.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2006/12/04/85329.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/85329.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/85329.html</trackback:ping><description><![CDATA[<div align="left">
正则表达式主要应用于文本的处理，如检索，替换，检查错误，文字拆分...实在是一言难尽，如果要全部写出来，一本书都不差不多。还好oreilly已经为我们出了一本了。</div>
<div align="left">&nbsp;</div>
<div align="left">
讲具体内容以前先给个完整的例子，这样能有个感性的认识。</div>
<div align="left">import java.util.regex.*;</div>
<div align="left">public class Regex{</div>
<div align="left">&nbsp;&nbsp; public
static void main(String[] args){</div>
<div align="left">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
String text = "my email address is "<u><font color="#0000ff">nicky.jcoder@gmail.com</font></u>";<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Pattern pattern = Pattern.compile("<a href="file://w+@//w+.//w">\\w+@\\w+.\\w</a>+");<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Matcher matcher = pattern.matcher(text);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if(matcher.find()){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
System.out.println(matcher.group());<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}</div>
<div align="left">&nbsp;</div>
<div align="left">&nbsp;&nbsp; }</div>
<div align="left">}</div>
<div align="left">
把这段程序用jdk或jcreator或水腻的便了。反正运行起来就是了</div>
<div align="left">输出结果:xhinker@163.com</div>
<div align="left">
当你看完下面的东西回头再看看这段程序就会发现，这不过是小菜一碟</div>
<div align="left">&nbsp;</div>
<div align="left">字符和字符类</div>
<div align="left">
<table border="1" cellpadding="0">
    <tbody>
        <tr>
            <td colspan="4">
            <p align="center">
            <font size="2">表格&nbsp;A:
            字符匹配</font>
            </p>
            </td>
        </tr>
        <tr>
            <td width="34">
            <p>
            <font size="2">操作</font>
            </p>
            </td>
            <td width="226">
            <p>
            <font size="2">解释</font>
            </p>
            </td>
            <td width="138">
            <p>
            <font size="2">例子</font>
            </p>
            </td>
            <td width="287">
            <p>
            <font size="2">结果</font>
            </p>
            </td>
        </tr>
        <tr>
            <td width="34">
            <p>
            <font size="2">.</font>
            </p>
            </td>
            <td width="226">
            <p>
            <font size="2">单个字符匹配</font>
            </p>
            </td>
            <td width="138">
            <p>
            <font size="2">&nbsp;&nbsp;
            .ord</font>
            </p>
            </td>
            <td width="287">
            <p>
            <font size="2">匹配&nbsp;&#8220;ford&#8221;, &#8220;lord&#8221;,
            &#8220;2ord&#8221;,</font>
            </p>
            </td>
        </tr>
        <tr>
            <td width="34">
            <p>
            <font size="2">[ ]</font>
            </p>
            </td>
            <td width="226">
            <p>
            <font size="2">多个字符列表</font>
            </p>
            </td>
            <td width="138">
            <p>
            <font size="2">&nbsp;&nbsp;
            [cng]</font>
            </p>
            </td>
            <td width="287">
            <p>
            <font size="2">只会匹配&nbsp;&#8220;cord&#8221;,
            &#8220;nord&#8221;,&nbsp;和 &#8220;gord&#8221;</font>
            </p>
            </td>
        </tr>
        <tr>
            <td width="34">
            <p>
            <font size="2">[^ ]</font>
            </p>
            </td>
            <td width="226">
            <p>
            <font size="2">不出现字符列表</font>
            </p>
            </td>
            <td width="138">
            <p>
            <font size="2">&nbsp;&nbsp;
            [^cn]</font>
            </p>
            </td>
            <td width="287">
            <p>
            <font size="2">匹配&nbsp;&#8220;lord&#8221;, &#8220;2ord&#8221;,
            等.&nbsp;但不会匹配 &#8220;cord&#8221; or &#8220;nord&#8221;</font>
            </p>
            </td>
        </tr>
        <tr>
            <td width="34">
            <br>
            </td>
            <td width="226">
            <br>
            </td>
            <td width="138">
            <p>
            <font size="2">&nbsp; [a-zA-Z]</font>
            </p>
            </td>
            <td width="287">
            <p>
            <font size="2">匹配&nbsp;&#8220;aord&#8221;, &#8220;bord&#8221;,
            &#8220;Aord&#8221;, &#8220;Bord&#8221;等</font>
            </p>
            </td>
        </tr>
        <tr>
            <td width="34">
            <br>
            </td>
            <td width="226">
            <br>
            </td>
            <td width="138">
            <p>
            <font size="2">&nbsp;&nbsp;
            [^0-9]</font>
            </p>
            </td>
            <td width="287">
            <p>
            <font size="2">匹配&nbsp;&#8220;Aord&#8221;, &#8220;aord&#8221;, 等.
            但不会匹配&#8220;2ord&#8221;, 等.</font>
            </p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<div align="left">&nbsp;</div>
<div align="center">
<table border="1" cellpadding="0">
    <tbody>
        <tr>
            <td colspan="4">
            <p align="center">
            <font size="2">表格&nbsp;B:
            重复操作符</font>
            </p>
            </td>
        </tr>
        <tr>
            <td width="35">
            <p>
            <font size="2">操作</font>
            </p>
            </td>
            <td width="247">
            <p>
            <font size="2">解释</font>
            </p>
            </td>
            <td width="125">
            <p>
            <font size="2">例子</font>
            </p>
            </td>
            <td width="268">
            <p>
            <font size="2">结果</font>
            </p>
            </td>
        </tr>
        <tr>
            <td width="35">
            <p>
            <font size="2">?</font>
            </p>
            </td>
            <td width="247">
            <p>
            <font size="2">匹配0次或1次</font>
            </p>
            </td>
            <td width="125">
            <p>
            <font size="2">&nbsp;&#8220;?erd&#8221;</font>
            </p>
            </td>
            <td width="268">
            <p>
            <font size="2">匹配&nbsp;&#8220;berd&#8221;,
            &#8220;herd&#8221;&#8220;erd&#8221;等</font>
            </p>
            </td>
        </tr>
        <tr>
            <td width="35">
            <p>
            <font size="2">*</font>
            </p>
            </td>
            <td width="247">
            <p>
            <font size="2">匹配0次以上</font>
            </p>
            </td>
            <td width="125">
            <p>
            <font size="2">&#8220;n*rd&#8221;</font>
            </p>
            </td>
            <td width="268">
            <p>
            <font size="2">匹配&nbsp;&#8220;nerd&#8221;, &#8220;nrd&#8221;,
            &#8220;neard&#8221;, 等.</font>
            </p>
            </td>
        </tr>
        <tr>
            <td width="35">
            <p>
            <font size="2">+</font>
            </p>
            </td>
            <td width="247">
            <p>
            <font size="2">匹配1次以上</font>
            </p>
            </td>
            <td width="125">
            <p>
            <font size="2">&#8220;[n]+erd&#8221;</font>
            </p>
            </td>
            <td width="268">
            <p>
            <font size="2">匹配&nbsp;&#8220;nerd&#8221;, &#8220;nnerd&#8221;,
            等.,&nbsp;但不匹配 &#8220;erd&#8221;</font>
            </p>
            </td>
        </tr>
        <tr>
            <td width="35">
            <p>
            <font size="2">{n}</font>
            </p>
            </td>
            <td width="247">
            <p>
            <font size="2">匹配n次</font>
            </p>
            </td>
            <td width="125">
            <p>
            <font size="2">&#8220;[a-z]{2}erd&#8221;</font>
            </p>
            </td>
            <td width="268">
            <p>
            <font size="2">匹配&#8220;cherd&#8221;, &#8220;blerd&#8221;,
            等.&nbsp;但不匹配 &#8220;nerd&#8221;, &#8220;erd&#8221;, &#8220;buzzerd&#8221;,
            等.</font>
            </p>
            </td>
        </tr>
        <tr>
            <td width="35">
            <p>
            <font size="2">{n,}</font>
            </p>
            </td>
            <td width="247">
            <p>
            <font size="2">匹配n次以上</font>
            </p>
            </td>
            <td width="125">
            <p>
            <font size="2">&#8220;.{2,}erd&#8221;</font>
            </p>
            </td>
            <td width="268">
            <p>
            <font size="2">匹配&nbsp;&#8220;cherd&#8221; and &#8220;buzzerd&#8221;,
            but not &#8220;nerd&#8221;</font>
            </p>
            </td>
        </tr>
        <tr>
            <td width="35">
            <p>
            <font size="2">{n,N}</font>
            </p>
            </td>
            <td width="247">
            <p>
            <font size="2">匹配n-N次</font>
            </p>
            </td>
            <td width="125">
            <p>
            <font size="2">&nbsp;&#8220;n[e]{1,2}rd&#8221;</font>
            </p>
            </td>
            <td width="268">
            <p>
            <font size="2">匹配&nbsp;&#8220;nerd&#8221; and
            &#8220;neerd&#8221;等</font>
            </p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<div align="left">&nbsp;</div>
<div align="left">常用符号：</div>
<div align="left">\d:[0-9]</div>
<div align="left">\D:[^0-9]</div>
<div align="left">\w:[a-zA-Z0-9]</div>
<div align="left">\W:[^a-zA-Z0-9]</div>
<div align="left">&nbsp;</div>
<div align="left">{?i):大小写无关</div>
<div align="left">&nbsp;</div>
<div align="left">\b和\B分别表示词边界和非词边界</div>
<div align="left">
当然上面这些只不过是最常用的，写出几个正则表达式是没有问题了。接下来说说java。</div>
<div align="left">
在java里\有其自身的意义，所以在用\s,\d的时候要加上一个\也就是\\s
、<a href="file:////d">\\d</a> \\(等</div>
<div align="left">
java自1.4后开始支持正则表达式，东西都放在java.util.regex包里，用Pattern生成一个模式对象，然后用matcher进行匹
配。如果要输出匹配结果的话，一定要记得写上matcher.find();否则会出错。当然也可以用替换，这就要看你的喜好拉。想看更多的例子就去
jdk帮助文档。</div><img src ="http://www.blogjava.net/wqnashqu/aggbug/85329.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2006-12-04 13:16 <a href="http://www.blogjava.net/wqnashqu/archive/2006/12/04/85329.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>swing中JTree的使用和JTree在netbeans中的用法（转）</title><link>http://www.blogjava.net/wqnashqu/archive/2006/12/04/85328.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Mon, 04 Dec 2006 05:11:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2006/12/04/85328.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/85328.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2006/12/04/85328.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/85328.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/85328.html</trackback:ping><description><![CDATA[<div>如何在java swing里使用JTree，就像下面这样的树</div>
<p align="center">
<img alt="A tree" src="http://java.sun.com/docs/books/tutorial/figures/uiswing/components/tree.gif" align="bottom" height="113" width="128">
</p>
<div>
<strong>手工创建:</strong>
</div>
<div>
首先，你需要创建一个JScrollPane，然后创建一个JTree,再然后创建节点TreeNode</div>
<div>
JScrollPane是盛放JTree的容器，JTree是一个结构相当于一个房子的钢筋框架，真正的内容是节点node。学过数据结构里的树的话可能会好理解一点。写代码的时候，三个过程的创建顺序不一定，也可以倒着过来写。</div>
<div>比如,创建一个简单的初始化 树的方法</div>
import java.awt.*;<br>
import java.awt.event.*;<br>
import javax.swing.*;<br>
import javax.swing.JTree;<br>
import javax.swing.tree.*;<br>
public class NewTree {<br>
&nbsp;&nbsp;&nbsp; public
NewTree() {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
JFrame jframe=new JFrame();//创建窗体<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Container c=jframe.getContentPane();//创建容器<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
JScrollPane scrollPane=new
JScrollPane();//创建一个用于树的容器<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
DefaultMutableTreeNode root=new
DefaultMutableTreeNode("root");//创建树根节点<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
DefaultMutableTreeNode file=new
DefaultMutableTreeNode("file1");//创建一个文件节点<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
root.add(file);//将文件节点添加到根节点下<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
JTree tree=new JTree(root);//以根节点为参数创建一个树对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
scrollPane.setViewportView(tree);//将树添加到scrollPane里面，并显示</em><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
c.add(scrollPane);//将scrollPane添加到窗体里<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jframe.pack();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jframe.setVisible(true);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jframe.addWindowListener(new
WindowAdapter(){//这段代码用于默认关闭<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
public void windowClosing(WindowEvent e){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
System.exit(0);&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
});<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; public
static void main(String[] args){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
new NewTree();<br>
&nbsp;&nbsp;&nbsp; }<br>
}
<div>
结果是这样的:注意关键的是斜体的代码，其他的都是swing的东西</div>
<p align="center"><a href="http://album.sina.com.cn/pic/413f505502000flk" target="_blank"><img src="http://album.sina.com.cn/pic/413f505502000flk" border="0"></a></p>
<div>
那么如何在netbeans里，创建和使用树呢?好多人看到的都是下面这样的:</div>
<p align="center"><a href="http://album.sina.com.cn/pic/413f505502000fll" target="_blank"><img src="http://album.sina.com.cn/pic/413f505502000fll" border="0"></a></p>
<div>
这是为什么呢？我找过代码结果没找到，后来发现这都是假的，你还是可以通过该改变代码来创建和使用你的树：改什么？改TreeModel.</div>
<div>到源代码界面下创建一个初始化树的方法:</div>
<div>public void treeInitialize(){</div>
<div>
&nbsp;&nbsp;&nbsp;JScrollPane
scrollPane=new JScrollPane();<br>
&nbsp;&nbsp;&nbsp;DefaultMutableTreeNode
root=new DefaultMutableTreeNode("root");<br>
&nbsp;&nbsp;&nbsp;DefaultMutableTreeNode
file=new DefaultMutableTreeNode("file1");<br>
&nbsp;&nbsp; root.add(file);<br>
&nbsp;&nbsp;&nbsp;JTree
tree=new JTree(root);</div>
<div><strong>&nbsp;&nbsp; TreeModel
treeModel = new DefaultTreeModel(root);<br>
&nbsp;&nbsp;
tree.setModel(treeModel);</strong></div>
<div>}</div>
<div>
注意黑体代码，这样在窗体的构造方法中调用treeInitialize()方法，你的树就被改变了，tree是你用netbeans生成树对象的引用或者名字，一般会是jTree1。</div>
接下来就是对树的操作了，限于篇幅不能再讲了 <img src ="http://www.blogjava.net/wqnashqu/aggbug/85328.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2006-12-04 13:11 <a href="http://www.blogjava.net/wqnashqu/archive/2006/12/04/85328.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>没有main方法，输出Hello,World!（转）</title><link>http://www.blogjava.net/wqnashqu/archive/2006/07/22/59559.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Sat, 22 Jul 2006 09:19:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2006/07/22/59559.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/59559.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2006/07/22/59559.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/59559.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/59559.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 通常我们学习一门语言的时候，第一个写的程序是输出"Hello,World!"，C/C++/Java中的入口都是main方法。实际上，在Java中，即便没有main方法，我们也可以输出Hello，程序如下：</p>
<p>/**<br>&nbsp;* @(#)Hello.java<br>&nbsp;* 没有main方法，输出Hello,World!<br>&nbsp;* 本程序请直接用javac编译，java解释运行<br>&nbsp;* 经测试，如果在Eclipse中试图运行，默认情况下，会启动失败<br>&nbsp;* <br>&nbsp;* @version J2SDK 1.4.2_10-b03<a href="http://www.loujing.com/"></a><br>&nbsp;*/<br>public class Hello {<br>&nbsp;static {<br>&nbsp;&nbsp;System.out.println("Hello,World!");<br>&nbsp;&nbsp;System.exit(0);&nbsp;&nbsp;//!如果缺少这一句，会出现运行期异常<br>&nbsp;}<br>}</p>
<p>&nbsp;&nbsp;&nbsp; 假使我们为Hello类增加一个main方法，虽然它也是static的，但是静态初始化块会在main之前被执行。</p><img src ="http://www.blogjava.net/wqnashqu/aggbug/59559.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2006-07-22 17:19 <a href="http://www.blogjava.net/wqnashqu/archive/2006/07/22/59559.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Robocode(转)</title><link>http://www.blogjava.net/wqnashqu/archive/2006/07/22/59558.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Sat, 22 Jul 2006 09:18:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2006/07/22/59558.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/59558.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2006/07/22/59558.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/59558.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/59558.html</trackback:ping><description><![CDATA[ 一直以来都对AI(人工智能)颇感兴趣，可惜都是些外层的皮毛，离入门的境界还远得很。最近在看《程序员》杂志2003年的合订本，突然发现了一个技术专题，就是Robocode，忙到网上下载了一个，初次尝试，感觉很有趣，特此推荐。
<p>&nbsp;&nbsp;&nbsp; 一、Robocode简介：Robocode是一位IBM的工程师Mat
Nelson用Java语言所创造的机器人战斗仿真引擎。Robocode不是一个完整游戏，它是个半成品，你所做的就是为你的机器人坦克编写智能程序，
让它能够移动、进攻、防御、躲避、开火。只用几十行代码，就能立刻创造出一个简单但完整机器人，你可以立即将它装入Robocode
引擎中，再从Robocode
自带的那些水平不一的示例机器人中选取一个进行一番对战，还可以在网上下载由其他程序员编写的水平更高的机器人，与它们比试一下，看看自己的水平到底如
何。<br>&nbsp;&nbsp;&nbsp; 开发Robocode，也是一个极佳的学习Java 语言的过程。随着你的机器人的&#8221;智力&#8221;水平的提高，你的编程能力也就跟着水涨船高了。</p>
<p><br>&nbsp;&nbsp;&nbsp; 二、如果您想了解更多的细节，请查看如下的资料：<br><br>&nbsp;&nbsp;&nbsp;
1．有关Robocode的详细资料，请查看如下的pdf文档，内含Robocode的详细介绍、Robocode安装、高水平机器人的代码分析、高级瞄
准策略、Robocode内核分析等7篇文章，帮助你入门，全部资料来自《程序员》2003年合订本配套光盘，请点击这里：<a href="http://www.loujing.com/mywork/java/Robocode/RobocodeBrief.pdf" target="_blank"><font color="#0000ff">http://www.loujing.com/mywork/java/Robocode/RobocodeBrief.pdf</font></a>，(首先请确保你计算机内安装了pdf文档阅读器，可自Adobe的网站自由下载，<a href="http://www.chinese-s.adobe.com/products/acrobat/readstep2.html" target="_blank"><font color="#0000ff">http://www.chinese-s.adobe.com/products/acrobat/readstep2.html</font></a>)。<br><br>&nbsp;&nbsp;&nbsp; 2．如果您需要了解Robocode更详细的信息，可参看如下网站：<br>&nbsp;&nbsp;&nbsp; Robocode在IBM的官方网站为：<a href="http://www.alphaworks.ibm.com/tech/robocode" target="_blank"><font color="#0000ff">http://www.alphaworks.ibm.com/tech/robocode</font></a>；另外，现在Robocode项目已经终止，成为开源项目，您可以从如下站点下载其源代码：<a href="http://robocode.sourceforge.net/" target="_blank"><font color="#0000ff">http://robocode.sourceforge.net/</font></a>。<br><br>&nbsp;&nbsp;&nbsp; 3．您可以自我的网站下载Robocode的1.0.6版本，下载地址为：<a href="http://www.loujing.com/mywork/java/Robocode/Robocode.rar" target="_blank"><font color="#0000ff">http://www.loujing.com/mywork/java/Robocode/Robocode.rar</font></a>，下载解压后双击其中的install.bat即可安装。当然，请首先确保您的机器里安装了J2SE SDK(Java软件开发包)，如果您不知道如何设置Java运行环境，请参考本人的另一篇文章：<a href="http://www.loujing.com/Article/ShowArticle.asp?ArticleID=31" target="_blank"><font color="#0000ff">ShowArticle.asp?ArticleID=31</font></a>。<br><br>&nbsp;&nbsp;&nbsp; 4．如果您是在Eclipse里进行Robocode的开发，您可以参考我的这篇文章<a target="_blank" href="http://www.loujing.com/Article/ShowArticle.asp?ArticleID=33"><font color="#0000ff">http://www.loujing.com/Article/ShowArticle.asp?ArticleID=33</font></a>。</p>
&nbsp;&nbsp;&nbsp; 希望您在游戏中也能不断提高自己的Java编程水平，新年快乐！ <img src ="http://www.blogjava.net/wqnashqu/aggbug/59558.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2006-07-22 17:18 <a href="http://www.blogjava.net/wqnashqu/archive/2006/07/22/59558.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>打印文本日历</title><link>http://www.blogjava.net/wqnashqu/archive/2006/07/22/59557.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Sat, 22 Jul 2006 09:17:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2006/07/22/59557.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/59557.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2006/07/22/59557.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/59557.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/59557.html</trackback:ping><description><![CDATA[<p>/**<br>&nbsp;* 程序运行当年的日历，程序运行当日以*号表示<a href="http://www.loujing.com/"></a><br>&nbsp;*/</p>
<p>import java.util.*;</p>
public class CalendarTest {<br>&nbsp;public static void main(String[] args) {<br>&nbsp;&nbsp;GregorianCalendar d = new GregorianCalendar();<br>&nbsp;&nbsp;int year = d.get(Calendar.YEAR);<br>&nbsp;&nbsp;int month = d.get(Calendar.MONTH);<br>&nbsp;&nbsp;int today = d.get(Calendar.DAY_OF_YEAR);<br>&nbsp;&nbsp;d.set(d.get(Calendar.YEAR),0,1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //设置为当年1月1日(0表示1月)<br>&nbsp;&nbsp;do {<br>&nbsp;&nbsp;&nbsp;System.out.println(d.get(Calendar.MONTH) + 1 + "月");<br>&nbsp;&nbsp;&nbsp;System.out.println("Sun Mon Tue Wed Thu Fri Sat"); //输出月表头<br>&nbsp;&nbsp;&nbsp;month = d.get(Calendar.MONTH);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //取得月份&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;int weekday = d.get(Calendar.DAY_OF_WEEK);&nbsp;&nbsp;&nbsp; //获得当月1号,在一周中是星期几<br>&nbsp;&nbsp;&nbsp;for(int i = Calendar.SUNDAY; i &lt; weekday; i++)//控制当月1号的起始位置<br>&nbsp;&nbsp;&nbsp;&nbsp;System.out.print("&nbsp;&nbsp;&nbsp; ");<br>&nbsp;&nbsp;&nbsp;do {<br>&nbsp;&nbsp;&nbsp;&nbsp;weekday = d.get(Calendar.DAY_OF_WEEK);<br>&nbsp;&nbsp;&nbsp;&nbsp;if (d.get(Calendar.DAY_OF_MONTH) &lt; 10)&nbsp;&nbsp;&nbsp; //如果日期小于10,多输出一个空格,以便对齐<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(" ");<br>&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(d.get(Calendar.DAY_OF_MONTH));//输出日期<br>&nbsp;&nbsp;&nbsp;&nbsp;if (today == d.get(Calendar.DAY_OF_YEAR)) //如果是当日,则输出一个*号<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print("* ");<br>&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print("&nbsp; ");<br>&nbsp;&nbsp;&nbsp;&nbsp;if (weekday == Calendar.SATURDAY)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //到达周六,则换行<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println();<br>&nbsp;&nbsp;&nbsp;&nbsp;d.add(Calendar.DAY_OF_YEAR,1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //日期累加<br>&nbsp;&nbsp;&nbsp;} while (d.get(Calendar.MONTH) == month);&nbsp;&nbsp;&nbsp;&nbsp; //如果还是当月,继续循环<br>&nbsp;&nbsp;&nbsp;System.out.println("\n");<br>&nbsp;&nbsp;} while (d.get(Calendar.YEAR) == year);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //如果还是当年,继续循环<br>&nbsp;}<br>} <img src ="http://www.blogjava.net/wqnashqu/aggbug/59557.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2006-07-22 17:17 <a href="http://www.blogjava.net/wqnashqu/archive/2006/07/22/59557.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 常见问题</title><link>http://www.blogjava.net/wqnashqu/archive/2006/05/16/46469.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Tue, 16 May 2006 11:45:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2006/05/16/46469.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/46469.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2006/05/16/46469.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/46469.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/46469.html</trackback:ping><description><![CDATA[		<font color="#18188c" size="2">
<strong>
</strong>
</font>
<font size="2">
<span id="ArticleContent1_ArticleContent1_lblContent">试题 <br>第一，谈谈final, finally, finalize的区别。 <br>final?
修饰符（关键字）如果一个类被声明为final，意味着它不能再派生出新的子类，不能作为父类被继承。因此一个类不能既被声明为
abstract的，又被声明为final的。将变量或方法声明为final，可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定
初值，而在以后的引用中只能读取，不可修改。被声明为final的方法也同样只能使用，不能重载 <br>finally?再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常，那么相匹配的 catch 子句就会执行，然后控制就会进入 finally 块（如果有的话）。 <br>finalize?
方法名。Java 技术允许使用 finalize()
方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在
Object 类中定义的，因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize()
方法是在垃圾收集器删除对象之前对这个对象调用的。 <br><br>第二，Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类，是否可以implements(实现)interface(接口)? <br>匿名的内部类是没有名字的内部类。不能extends(继承) 其它类，但一个内部类可以作为一个接口，由另一个内部类实现。 <br><br>第三，Static Nested Class 和 Inner Class的不同，说得越多越好(面试题有的很笼统)。 <br>Nested
Class （一般是C++的说法），Inner Class
(一般是J***A的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。具体可见http:
//www.frontfree.net/articles/services/view.asp?id=704&amp;page=1 <br>注： 静态内部类（Inner Class）意味着1创建一个static内部类的对象，不需要一个外部类对象，2不能从一个static内部类的一个对象访问一个外部类对象 <br><br>第四，&amp;和&amp;&amp;的区别。 <br>&amp;是位运算符。&amp;&amp;是布尔逻辑运算符。 <br><br>第五，HashMap和Hashtable的区别。 <br>都属于Map接口的类，实现了将惟一键映射到特定的值上。 <br>HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。 <br>Hashtable 类似于 HashMap，但是不允许 null 键和 null 值。它也比 HashMap 慢，因为它是同步的。 <br><br>第六，Collection 和 Collections的区别。 <br>Collections是个java.util下的类，它包含有各种有关集合操作的静态方法。 <br>Collection是个java.util下的接口，它是各种集合结构的父接口。 <br><br><br>第七，什么时候用assert。 <br>断言是一个包含布尔表达式的语句，在执行这个语句时假定该表达式为 true。如果表达式计算为 false，那么系统会报告一个 AssertionError。它用于调试目的： <br>assert(a &gt; 0); // throws an AssertionError if a &lt;= 0 <br>断言可以有两种形式： <br>assert Expression1 ; <br>assert Expression1 : Expression2 ; <br>Expression1 应该总是产生一个布尔值。 <br>Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。 <br>断言在默认情况下是禁用的。要在编译时启用断言，需要使用 source 1.4 标记： <br>javac -source 1.4 Test.java <br>要在运行时启用断言，可使用 -enableassertions 或者 -ea 标记。 <br>要在运行时选择禁用断言，可使用 -da 或者 -disableassertions 标记。 <br>要系统类中启用断言，可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。 <br>可
以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过，断言不应该用于验证传递给公有方法的参数，因为不管是否
启用了断言，公有方法都必须检查其参数。不过，既可以在公有方法中，也可以在非公有方法中利用断言测试后置条件。另外，断言不应该以任何方式改变程序的状
态。<br><br><br></span>
</font>
<font id="zoom" size="2">第八，GC是什么? 为什么要有GC? (基础)。 <br>GC是垃圾收集器。Java <a href="http://www.gamvan.com/developer" target="_blank">程序员</a>不用担心内存管理，因为垃圾收集器会自动进行管理。要请求垃圾收集，可以调用下面的方法之一： <br>System.gc() <br>Runtime.getRuntime().gc() <br><br>第九，String s = new String("xyz");创建了几个String Object? <br>两个对象，一个是&#8220;xyx&#8221;,一个是指向&#8220;xyx&#8221;的引用对象s。 <br><br>第十，Math.round(11.5)等於多少? Math.round(-11.5)等於多少? <br>Math.round(11.5)返回（long）12，Math.round(-11.5)返回（long）-11; <br><br>第十一，short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? <br>short s1 = 1; s1 = s1 + 1;有错，s1是short型，s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。 <br><br>第十二，sleep() 和 wait() 有什么区别? 搞线程的最爱 <br>sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后，线程不一定立即恢复执行。这是因为在那个时刻，其它线程可能正在运行而且没有被调度为放弃执行，除非(a)&#8220;醒来&#8221;的线程具有更高的优先级 <br>(b)正在运行的线程因为其它原因而阻塞。 <br>wait()是线程交互时，如果线程对一个同步对象x 发出一个wait()调用，该线程会暂停执行，被调对象进入等待状态，直到被唤醒或等待时间到。 <br><br><br><br>第十三，Java有没有goto? <br>Goto?java中的保留字，现在没有在java中使用。 <br><br>第十四，数组有没有length()这个方法? String有没有length()这个方法？ <br>数组没有length()这个方法，有length的属性。 <br>String有有length()这个方法。 <br><br>第十五，Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? <br>方
法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现，重
载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数，我们说该方法被重写
(Overriding)。子类的对象使用这个方法时，将调用子类中的定义，对它而言，父类中的定义如同被&#8220;屏蔽&#8221;了。如果在一个类中定义了多个同名的方
法，它们或有不同的参数个数或有不同的参数类型，则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 <br><br>第十六，Set里的元素是不能重复的，那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? <br>Set里的元素是不能重复的，那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。 <br>equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖，为的是当两个分离的对象的内容和类型相配的话，返回真值。 <br><br>第十七，给我一个你最常见到的runtime exception。 <br>ArithmeticException,
ArrayStoreException, BufferOverflowException, BufferUnderflowException,
CannotRedoException, CannotUndoException, ClassCastException,
CMMException, ConcurrentModificationException, DOMException,
EmptyStackException, IllegalArgumentException,
IllegalMonitorStateException, IllegalPathStateException,
IllegalStateException, <br>ImagingOpException,
IndexOutOfBoundsException, MissingResourceException,
NegativeArraySizeException, NoSuchElementException,
NullPointerException, ProfileDataException, ProviderException,
RasterFormatException, SecurityException, SystemException,
UndeclaredThrowableException, UnmodifiableSetException,
UnsupportedOperationException <br><br>第十八，error和exception有什么区别? <br>error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 <br>exception 表示一种设计或实现问题。也就是说，它表示如果程序运行正常，从不会发生的情况。 <br><br><br>第十九，List, Set, Map是否继承自Collection接口? <br>List，Set是 <br><br>Map不是 <br><br>第二十，abstract class和interface有什么区别? <br>声
明方法的存在而不去实现它的类被叫做抽象类（abstract
class），它用于要创建一个体现某些基本行为的类，并为该类声明方法，但不能在该类中实现该类的情况。不能创建abstract
类的实例。然而可以创建一个变量，其类型是一个抽象类，并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract
类的子类为它们父类中的所有抽象方法提供实现，否则它们也是抽象类为。取而代之，在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。 <br>接
口（interface）是抽象类的变体。在接口中，所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的，没有一个有
程序体。接口只可以定义static
final成员变量。接口的实现与子类相似，除了该实现类不能从接口定义中继承行为。当类实现特殊接口时，它定义（即将程序体给予）所有这种接口的方法。
然后，它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类，它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到
接口类型或从接口类型转换，instanceof 运算符可以用来决定某对象的类是否实现了接口。 <br><br>第二十一，abstract的method是否可同时是static,是否可同时是native，是否可同时是synchronized? <br>都不能 <br><br>第二十二，接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? <br>接口可以继承接口。抽象类可以实现(implements)接口，抽象类是否可继承实体类，但前提是实体类必须有明确的构造函数。 <br><br>第二十三，启动一个线程是用run()还是start()? <br>启动一个线程是调用start()方法，使线程所代表的虚拟处理机处于可运行状态，这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。 <br><br><br><br>第二十四，构造器Constructor是否可被override? <br>构造器Constructor不能被继承，因此不能重写Overriding，但可以被重载Overloading。 <br><br>第二十五，是否可以继承String类? <br>String类是final类故不可以继承。 <br><br><br></font>
<font id="zoom" size="2">第二十六，当一个线程进入一个对象的一个synchronized方法后，其它线程是否可进入此对象的其它方法? <br>不能，一个对象的一个synchronized方法只能由一个线程访问。 <br><br>第二十七，try {}里有一个return语句，那么紧跟在这个try后的finally {}里的code会不会被执行，什么时候被执行，在return前还是后? <br>会执行，在return前执行。 <br><br><br>第二十八，编程题: 用最有效率的方法算出2乘以8等於几? <br>有C背景的<a href="http://www.gamvan.com/developer" target="_blank">程序员</a>特别喜欢问这种问题。 <br><br>2 &lt;&lt; 3 <br><br>第二十九，两个对象值相同(x.equals(y) == true)，但却可有不同的hash code，这句话对不对? <br>不对，有相同的hash code。 <br><br>第三十，当一个对象被当作参数传递到一个方法后，此方法可改变这个对象的属性，并可返回变化后的结果，那么这里到底是值传递还是引用传递? <br>是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时，参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变，但对象的引用是永远不会改变的。 <br><br><br>第三十一，swtich是否能作用在byte上，是否能作用在long上，是否能作用在String上? <br>switch（expr1）中，expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。 <br><br>第三十二，编程题: 写一个Singleton出来。 <br>Singleton模式主要作用是保证在Java应用程序中，一个类Class只有一个实例存在。 <br>一般Singleton模式通常有几种种形式: <br>第一种形式: 定义一个类，它的构造函数为private的，它有一个static的private的该类变量，在类初始化时实例话，通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。 <br>public class Singleton { <br>　　private Singleton(){} <br>　　//在自己内部定义自己一个实例，是不是很奇怪？ <br>　　//注意这是private 只供内部调用 <br>　　private static Singleton instance = new Singleton(); <br>　　//这里提供了一个供外部访问本class的静态方法，可以直接访问　　 <br>　　public static Singleton getInstance() { <br>　　　　return instance; 　　 <br>　　 } <br>} <br>第二种形式: <br>public class Singleton { <br>　　private static Singleton instance = null; <br>　　public static synchronized Singleton getInstance() { <br>　　//这个方法比上面有所改进，不用每次都进行生成对象，只是第一次　　　 　 <br>　　//使用时生成实例，提高了效率！ <br>　　if (instance==null) <br>　　　　instance＝new Singleton(); <br>return instance; 　　} <br>} <br>其他形式: <br>定义一个类，它的构造函数为private的，所有方法为static的。 <br>一般认为第一种形式要更加<a href="http://www.gamvan.com/server/" target="_blank">安全</a>些</font><img src ="http://www.blogjava.net/wqnashqu/aggbug/46469.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2006-05-16 19:45 <a href="http://www.blogjava.net/wqnashqu/archive/2006/05/16/46469.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jbuilder 调整</title><link>http://www.blogjava.net/wqnashqu/archive/2006/05/16/46468.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Tue, 16 May 2006 11:42:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2006/05/16/46468.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/46468.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2006/05/16/46468.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/46468.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/46468.html</trackback:ping><description><![CDATA[<h2 class="diaryTitle">
<font size="2">&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font>
</h2>
<h2 class="diaryTitle">
<font size="2">一，JBuilder光标定位不准确的修改::&nbsp; </font>
</h2>
<p>
</p>
<p>
<font size="2">在中文的Windows下面安装JBuilder后，<br>在IDE的代码编辑器里面光标定位会不准确，<br>很多人通过修改Editor的缺省字体来修改这个问题，<br>但是JBuilder预设的字体是最美观的。鱼与熊掌不能兼得，那么改怎么办才好呢？</font>
</p>
<p>
<font size="2">其实最简单的办法就是把JBuilder的Editor里面的<br>缺省字体里面的语法高亮列表里面"Reserved word"的Bold的属性去掉，<br>就可以了，而且字体还更漂亮！</font>
</p>
<p>
<font size="2">具体路径："Editor Option"-&gt;"Color"-&gt;"Screen Element"-&gt;"Reserved word"<br>-&gt;"Attributes"-&gt;"Bold"，把"Bold"uncheck就可以了！</font>
</p>
<p>
<font size="2">
<br>Enjoy it！！<br>二，如何在Jbuilder中使用自定义的Server.xml文件？<br>这个问题相信困扰很多人了，解决办法如下<br>1，在jbuilder中运行web app<br>2,在输出窗口察看server0808的输出目录<br>我的jbuilder7是C:/myapp/Tomcat/conf/server8080.xml<br>3,把这个文件备份，<br>其中有这样一行<br></font>
<!--this file, generated by JBuilder, may be deleted and regenerated at any time.-->
</p>
<p>
<font size="2">4，删除这一行，停止web app<br>5,此时Tomcat目录下没有conf目录了，建立这个目录，将删除了3中这句话的文件放在<br>conf目录，还叫做server8080.xml，把自己需要的连接池等信息加入</font>
</p>
<p>
<font size="2">6，运行web app，我在jbuilder7中不会替换这个文件。</font>
</p>
<p>
<font size="2">ok...........................</font>
</p>
<p>
<font size="2">
<br>Using a Custom server.xml file with Tomcat in JBuilder <br>Question:&nbsp; How do a use a custom server.xml with Tomcat in JBuilder 4,5 and 6?</font>
</p>
<p>
<font size="2">Answer:<br>Make a copy of the JBuilder-generated server.xml file while your Web app <br>is running, modify the line which says the file was generated by JBuilder,<br>make you mods, and then AFTER you quit the Web app you were just running, <br>save your modified copy back to server.xml. After that, JBuilder won't <br>modify that file.</font>
</p>
<p>
<font size="2">Note: Remember that when you shut down Tomcat you'll need to recreate <br>the directory that the server.xml file was in before you can save it back out. <br>After you've made the above modifications, JBuilder will leave the directory <br>alone.<br>&nbsp;<br>三，如何修改jbuilderx的字体<br>#1: 安装JBX<br>#2: 改变一下，Editor|Display 里面的字体，主要是让jbx搜索系统字体<br>#3: 关闭JBX<br>#4: 用户主目录下（我的是：C:\Documents and Settings\Administrator\）<br>.primetimeX/user_zh.properties</font>
</p>
<p>
<font size="2">添加一行：<br>editor.display;fixed_fonts.3=\u5b8b\u4f53</font>
</p>
<p>
<font size="2">就可以啦！<br>同样也可以添加其它字体，只要在<br>editor.display;known_fonts<br>列表中有的，都可以添加，顺序编号就行了</font>
</p>
<font size="2">#5: 重起JBX</font><img src ="http://www.blogjava.net/wqnashqu/aggbug/46468.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2006-05-16 19:42 <a href="http://www.blogjava.net/wqnashqu/archive/2006/05/16/46468.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Jbulider开发J2ME移动游戏程序</title><link>http://www.blogjava.net/wqnashqu/archive/2006/05/09/45259.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Tue, 09 May 2006 10:31:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2006/05/09/45259.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/45259.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2006/05/09/45259.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/45259.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/45259.html</trackback:ping><description><![CDATA[这是一篇关于怎样使用JBuilder开发j2me程序的例子。本人使用JBuilder2005,2005自带WTK2.1，自己下载2.2版
本，2.2那个默认的模拟器很好用。另外,Jbuilder X下的WTK也是2.0的版本好象。Jbuilder 9的WTK是1.04。
<p>首先开启Jbuilder.建立一个Project。</p>
<img alt="" src="http://www.pconline.com.cn/pcedu/empolder/gj/java/0507/pic/05-07-22-j2me-1_1.jpg" border="0"><br><br><br><br>然后填写名字和路径。继续：<br><img alt="" src="http://www.pconline.com.cn/pcedu/empolder/gj/java/0507/pic/05-07-22-j2me-2_1.jpg" border="0"><br><br>然后选择JDK路径，本身已有WTK2.1，你可以选择。但是你也可以自己选择其他的WTK版本。<br><img alt="" src="http://www.pconline.com.cn/pcedu/empolder/gj/java/0507/pic/05-07-22-j2me-3_1.jpg" border="0"><br><br><br>点击jdk后面的路径按钮,继续:<br><img alt="" src="http://www.pconline.com.cn/pcedu/empolder/gj/java/0507/pic/05-07-22-j2me-4_1.jpg" border="0"><br><br>然后ok,next.工程建立完毕.<br>接着点击file-&gt;New:<br><img alt="" src="http://www.pconline.com.cn/pcedu/empolder/gj/java/0507/pic/05-07-22-j2me-5_2.jpg" border="0"><br><br><br>然后在对话框左边选择Micro,你就能看到右边出现MIDlet,Displayable.<br><br>接上面的:如图示<br><br><img alt="" src="http://www.pconline.com.cn/pcedu/empolder/gj/java/0507/pic/05-07-22-j2me-6_1.jpg" border="0"><br><br><br>点击MIDlet or Displayable,则让你输入MIDlet的名字.如图:<br><img alt="" src="http://www.pconline.com.cn/pcedu/empolder/gj/java/0507/pic/05-07-22-j2me-7_1.jpg" border="0"><br><br><br>继续下一步,让你输入一个Displayable的名字,包括类型(form,canvas等),是否自动加载Command<br><br>等等<br><img alt="" src="http://www.pconline.com.cn/pcedu/empolder/gj/java/0507/pic/05-07-22-j2me-8_1.jpg" border="0"><br><br><br>然后Jbuilder自动生成所需代码,以及Jbuilder自加的一些东西.你可以添加或修改之.<br><br>这里我将本站一篇关于介绍Gamecanvas的文章的代码拿过来,做少量修改,作为本文章的一个演示;<br>TestMIDlet.java文件:<br><br><br>
<p class="code">package temps;<br><br>import javax.microedition.midlet.*;<br>import javax.microedition.lcdui.*;<br><br><font color="#ff9900">/**<br>* Title: <br>*<br>* Description: <br>*<br>* Copyright: Copyright (c) 2005<br>*<br>* Company: <br>*<br>* @author not attributable<br>* @version 1.0<br>*/</font><br>public class TestMIDlet extends MIDlet<br>{<br>private Display display;<br><br>public void startApp()<br>{<br>try<br>{<br>display = Display.getDisplay(this);<br>Displayable1 gameCanvas = new Displayable1();<br>gameCanvas.start();<br>display.setCurrent(gameCanvas);<br>}<br>catch (Exception ex)<br>{<br>System.out.println(ex);<br>}<br>}<br><br>public Display getDisplay()<br>{<br>return display;<br>}<br><br>public void pauseApp()<br>{<br>}<br><br>public void destroyApp(boolean unconditional)<br>{<br>exit();<br>}<br><br>public void exit()<br>{<br>System.gc();<br>destroyApp(false);<br>notifyDestroyed();<br>}<br>}</p>
<br>Displayable1.java内容:<br>
<p class="code">package temps;<br><br>import javax.microedition.lcdui.*;<br>import java.util.Random;<br>import javax.microedition.lcdui.game.*;<br><font color="#ff9900">/**<br>* Title: <br>*<br>* Description: <br>*<br>* Copyright: Copyright (c) 2005<br>*<br>* Company: <br>*<br>* @author not attributable<br>* @version 1.0<br>*/</font><br>public class Displayable1 extends GameCanvas implements Runnable<br>{<br>private boolean isPlay; // Game Loop runs when isPlay is true<br>private long delay; // To give thread consistency<br>private int currentX, currentY; // To hold current position of the 'X'<br>private int width; // To hold screen width<br>private int height; // To hold screen height<br>private Random random=new Random(System.currentTimeMillis());<br>private final int[] sequence={0,1,2,1,0,1,2,1,0,1,2,1,1,1,1,1,1};<br>private int counter=0;<br>private int enemyX,enemyY;<br>private int enemyDirect=0;<br>private boolean isdown=false;<br><br>private boolean isalive=true;<br><br>// Sprites to be used<br>private Sprite playerSprite;<br>private Sprite backgroundSprite;<br>private Sprite enemySprite;<br><br>// Layer Manager<br>private LayerManager layerManager;<br><br>// Constructor and initialization<br>public Displayable1() throws Exception<br>{<br>super(true);<br>width = getWidth();<br>height = getHeight();<br><br>currentX = width / 2;<br>currentY = height / 2;<br>enemyX=width/4;<br>enemyY=height/4;<br>delay = 100;<br><br>Image playerImage=null;<br>Image backgroundImage=null;<br>Image enemy=null;<br>// Load Images to Sprites<br>try<br>{<br>playerImage = Image.createImage("/transparent.png");<br>backgroundImage = Image.createImage("/background.png");<br>enemy=Image.createImage("/frames.png");<br>}<br>catch(Exception e)<br>{<br>System.out.println("get Image error!"+e.getMessage());<br>}<br><br>playerSprite = new Sprite(playerImage, 32, 32);<br>System.out.println(playerSprite.getRawFrameCount());<br>enemySprite=new Sprite(enemy,50,21);<br>backgroundSprite = new Sprite(backgroundImage);<br>layerManager = new LayerManager();<br>layerManager.append(playerSprite);<br>layerManager.append(enemySprite);<br>layerManager.append(backgroundSprite);<br><br>}<br><br>// Automatically start thread for game loop<br>public void start()<br>{<br>isPlay = true;<br>Thread t = new Thread(this);<br>t.start();<br>}<br><br>public void stop()<br>{<br>isPlay = false;<br>}<br><br>// Main Game Loop<br>public void run()<br>{<br>Graphics g = getGraphics();<br>while (isPlay == true)<br>{<br>input();<br>drawScreen(g);<br>try<br>{<br>Thread.sleep(delay);<br>}<br>catch (InterruptedException ie)<br>{<br><br>}<br>}<br>}<br><br>// Method to Handle User Inputs<br>private void input()<br>{<br>int keyStates = getKeyStates();<br><br>playerSprite.setFrame(0);<br>if(isalive)<br>{<br>if(counter==0)<br>{<br>enemyDirect=Math.abs(random.nextInt()%4);<br>}<br>counter++;<br>switch(enemyDirect)<br>{<br>case 0:<br>enemyY=Math.max(0,--enemyY);<br>break;<br>case 1:<br>enemyY=Math.min(++enemyY,height-enemySprite.getHeight());<br>break;<br>case 2:<br>enemyX=Math.max(0,--enemyX);<br>break;<br>case 3:<br>enemyX=Math.min(++enemyX,width-enemySprite.getWidth());<br>break;<br>}<br>counter=(counter++)%(sequence.length());<br>enemySprite.setFrame(sequence[counter]);<br>}<br>else<br>{<br>enemyY+=counter;<br>enemyY=Math.min(enemyY,height-enemySprite.getHeight());<br><br>if(enemyY<height-enemysprite.getheight())><br> counter++;<br>enemySprite.setFrame(3);<br>}<br><br>// Left<br>if ((keyStates &amp; LEFT_PRESSED) != 0)<br>{<br>currentX = Math.max(0, currentX - 1);<br>playerSprite.setFrame(1);<br>}<br><br>// Right<br>if ((keyStates &amp; RIGHT_PRESSED) != 0)<br>if (currentX + 5 &lt; width)<br>{<br>currentX = Math.min(width, currentX + 1);<br>playerSprite.setFrame(3);<br>}<br><br>// Up<br>if ((keyStates &amp; UP_PRESSED) != 0)<br>{<br>currentY = Math.max(0, currentY - 1);<br>playerSprite.setFrame(2);<br>}<br><br>// Down<br>if ((keyStates &amp; DOWN_PRESSED) != 0)<br>{<br>isdown=true;<br>}<br><br>if ((keyStates &amp; DOWN_PRESSED) != 0)<br>{<br>if(isdown)<br>{<br>if (currentY + 10 &lt; height)<br>{<br>currentY = Math.min(height, currentY + 1);<br>playerSprite.setFrame(4);<br>}<br>}<br>}<br><br>if((keyStates &amp; FIRE_PRESSED)!=0)<br>{<br>isalive=!isalive;<br>counter=0;<br>}<br><br>if(!(enemyX+enemySprite.getWidth()<currentx enemyy+enemysprite.getheight=""><currenty |="" enemyx="">currentX+playerSprite.getWidth() || enemyY&gt;currentY+playerSprite.getHeight()) &amp;&amp; isalive)<br>{<br>counter=0;<br>isalive=false;<br>}<br>}<br><br>// Method to Display Graphics<br>private void drawScreen(Graphics g)<br>{<br>g.setColor(0xffffff);<br>g.fillRect(0, 0, getWidth(), getHeight());<br>g.setColor(0x0000ff);<br><br>// updating player sprite position<br>playerSprite.setPosition(currentX, currentY);<br>enemySprite.setPosition(enemyX,enemyY);<br><br>layerManager.setViewWindow(0, 0, width, height);<br>layerManager.paint(g, 0,0);<br><br>g.setColor(0xffffff);<br>flushGraphics();<br>}<br><br>}</currenty></currentx></height-enemysprite.getheight())></p>
<br>　　此程序里敌人随机向4个方向移动,而玩家控制的角色可任意移动, 如果两者发生碰撞,则敌人死亡.<br><br>　　另外按fire键可直接让敌人生或死<br>关于运行,Jbuilder里有个运行配置:<br><br><img alt="" src="http://www.pconline.com.cn/pcedu/empolder/gj/java/0507/pic/05-07-22-j2me-9_1.jpg" border="0"><br><br><br>一般不用修改,如果多个Midlet,你可以在这里添加.<br><br>关于用Jbuilder打包.<br><br>一样file-&gt;new:<br><br><img alt="" src="http://www.pconline.com.cn/pcedu/empolder/gj/java/0507/pic/05-07-22-j2me-10_1.jpg" border="0"><br><br><br>这个在2005和9,x里有所不同,选择Archive,右边选择MIDlet,然后ok.<br><br><img alt="" src="http://www.pconline.com.cn/pcedu/empolder/gj/java/0507/pic/05-07-22-j2me-11_1.jpg" border="0"><br><br><br>这里选择要打包文件的目录,当前默认是所有的class文件和资源文件,你也可以删除掉,自己选择一部分.<br><br>然后next,直到最后. 然后运行,在运行配置中默认重新rebuild,打包等等.然后你能看到左上框里有jar文件和jad文件.<br><br><img alt="" src="http://www.pconline.com.cn/pcedu/empolder/gj/java/0507/pic/05-07-22-j2me-12_1.jpg" border="0"><br><br><br>运行结果:<br><br><img alt="" src="http://www.pconline.com.cn/pcedu/empolder/gj/java/0507/pic/05-07-22-j2me-13.jpg" border="0"><br><br><br>呵呵,用你控制的主角去碰撞这只大飞虫试试:<br><img alt="" src="http://www.pconline.com.cn/pcedu/empolder/gj/java/0507/pic/05-07-22-j2me-14.jpg" border="0"><br> <img src ="http://www.blogjava.net/wqnashqu/aggbug/45259.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2006-05-09 18:31 <a href="http://www.blogjava.net/wqnashqu/archive/2006/05/09/45259.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2ME开发及JBuilder工具的应用(转)</title><link>http://www.blogjava.net/wqnashqu/archive/2006/05/09/45257.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Tue, 09 May 2006 10:17:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2006/05/09/45257.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/45257.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2006/05/09/45257.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/45257.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/45257.html</trackback:ping><description><![CDATA[在无线通信领域有两项重大的技术应用，一个是宽带CDMA技术，一个是IP技术。前者使无线通信获得更多带宽，3G的目标是静态速率达到2Mbps，而现
在的2.5G技术（如国内正在建设的GPRS和CDMA2000
1X）都可达到115kbps的速率；后者使无线通信和因特网融合起来，实际上当前WAP2.0技术就采用已经很成熟的TCP、TLS和HTTP协议，而
移动IP和IPv6技术将促使更多设备接入互联网，如各种设备、家电等。 <br><br>　　就是在这样的环境下J2ME技术得以快速发展，J2ME用来为接入和即将接入互联网的设备提供应用开发平台和执行环境，本文则主要论述如何利用JBuilder进行快速的J2ME应用开发。 <br><br>　　1. J2ME分层结构及MIDP简表 <br><br>
J2ME是SUN的JAVA2平台微型版（JAVA2平台3个版本之一，另两个是标准版J2SE和企业版J2EE），采用3层结构设计。最低层为配置层
（Configuration），包括虚拟机（VM）和类库两部分，这一层与设备层（硬件及操作系统）关系紧密，由SUN提供参考规范和源代码，设备厂商
根据设备特征进行相应的移植。当前J2ME提供有两个配置：连接设备配置（CDC）和有限连接设备配置（CLDC）。前者主要面向有较大内存和处理能力而
只需有限功能的设备，如电视置顶盒、冰箱、汽车导航设备等，这些设备都有连接网络和相互交互的需求，其内存在2M以上；后者主要面向对内存和处理能力有较
大限制的手持设备，如现在使用的手机、PDA等，现在及将来大多数这些设备都已经能够接入互联网，其内存范围160Kb（其中128Kb用于虚拟机及类
库，至少32Kb用于CLDC规范所要求的应用程序堆栈空间）到2M。二者主要区别在于能提供给VM及应用程序的存储空间，CDC所用VM及类库实际是参
考J2SE标准，去除了不需要的功能如AWT。CLDC所用VM（称作KVM）则有较大区别，包括类验证机制。对于下一代移动终端设备如智能电话、高端
PDA，则是CDC所应用对象，因为它们将有超过2M的内存。 <br><br>　　设备层之上是简表层（Profile），再之上则是应用层
（Application）。简表层扩展了配置层功能为上层应用提供API，如果说配置层面向设备，简表层则面向应用。可以根据需要在CDC或CLDC基
础之上提供多种简表，一个配置层之上也可以有多个简表。当前CDC之上有基础简表（Foundation
Profile）和基于FP的Personal Profile和RMI
Profile。CLDC之上则主要提供有移动信息设备简表（MIDP），即用于手机、PDA等移动终端的设备简表，提供API以支持无线应用的开发。
<br><br>　　CLDC类库一部分来自J2SE，这部分类库是经过裁减的，去除了不必要的功能，主要包括java.lang包中的系统类、数据类型
类、异常处理类，java.util包的集合类、时间类和附加工具类，java.io包的I/O处理类。CLDC专有类则主要是"通用连接框架（GCF）
"，为CLDC提供网络连接功能，这些网络接口都是Connection类的子类，由类Connector所提供的方法调用，这些接口或类位于包
javax.microedition.io。 <br><br>　　CDC类库则是CLDC的超集，因此为CLDC开发的应用程序可以移植到CDC平
台，由于CDC采用标准的J2SE
VM，因此其开发与标准的J2SE开发一致，只是在用javac工具编译源代码时需要使用CDC的类库，即使用-bootclasspath参数指向
CDC类库。 <br><br>　　MIDP扩展了CLDC的功能，它继承了GCF并在此基础上增加了类HttpConnection，用以提供
HTTP连接功能（尽管从理论上CLDC/MIDP可以提供socket、数据报、文件、NFS等多种连接类型，但现在标准的CLDC/MIDP仅支持
HTTP协议，一些设备实现则提供了socket和HTTPS协议的支持），MIDP类库 <br><br>　　总结如下： <br><br>　　java.io、java.lang、java.util，属于MIDP的核心包，分别用来提供系统I/O、语言支持和工具支持。包中的类来自CLDC并稍有增加，但都来自J2SE。 <br><br>　　javax.microedition.midlet，定义了MIDP应用程序，以及应用程序和它所运行于环境之间的交互。 <br><br>　　javax.microedition.lcdui，为MIDP应用程序提供用户界面API。 <br><br>　　javax.microedition.rms，用来为MIDlet提供持久存储的机制，应用程序可以存储数据，在以后需要的时候获取这些数据。 <br><br>　　javax.microedition.io，提供了基于CLDC通用连接框架的网络支持。 <br><br><br>2. MIDP应用程序开发 <br><br>　　这里讨论的J2ME无线应用开发主要是基于CLDC/MIDP的开发，其应用程序可运行于移植有KVM的手机、PDA等，这类设备由MIDP定义，即移动信息设备（MID），可看作一垂直应用市场。 <br><br>　　可在PC（Windows、UNIX或Linux平台）上开发MIDP应用程序，编译成类文件形式，下载到目标设备上，经过类文件的验证（验证是否有不符合KVM规范的方法调用等）后即可解释执行。 <br><br>　　生成的.java文件至少有一个是扩展了javax.microedition.midlet.MIDlet类的子类，并且实现几个规定的接口，比如下面的一个MIDlet程序 ： <br><br><br>import javax.microedition.midlet.*; //应用程序生命周期，和J2SE一样，包java.lang.*是默认加载的 <br>import javax.microedition.lcdui.*; //MIDP用户界面 <br>public class FirstMIDlet extends MIDlet implements CommandListener { <br>private Display display; // 引用MIDlet的Display 对象 <br>private TextBox textBox; // Textbox 显示一条消息 <br>private Command cmdExit; // 设定按钮用于退出MIDlet <br>public FirstMIDlet() { // MIDlet构造程序 <br>display = Display.getDisplay(this); <br>cmdExit = new Command("Exit", Command.SCREEN, 1); <br>textBox = new TextBox("My First MIDlet", "Hello, J2ME！", 50, 0); <br>textBox.addCommand(cmdExit); <br>textBox.setCommandListener(this); <br>} <br>public void startApp() { // 必须要实现的接口，被应用管理软件调用来启动MIDlet <br>display.setCurrent(textBox); <br>} <br>public void pauseApp() { } // 必须要实现的接口 <br>public void destroyApp(boolean unconditional) { } //必须要实现的接口 <br>public void commandAction(Command c, Displayable d) { //检查一下是否选择了退出命令 <br>if (c == cmdExit) { <br>destroyApp(false); <br>notifyDestroyed(); <br>} <br>} <br>} <br><br>
这是最简单且功能完整的MIDlet应用程序，其中接口startApp、pauseApp、destroyApp是必须要实现的，应用程序管理器
（JAM）通过这些接口调用和控制应用程序，与Applet类似。除这个主类外还可以有其它辅助类，其要求和J2SE一致。 <br><br>然后使用
javac工具编译，javac工具来自J2SE，至少JDK
1.3版，编译时应该使用参数-bootclasspath并指向MIDP类库。之后使用preverify工具预验证，以保证生成的.class文件符
合CLDC要求，这一步为每个类文件添加堆栈映射（stackmap，此属性为CLDC新定义）属性，增加类文件大小约5%。 <br><br>　　此时可以用midp工具（来自MIDP实现的可执行文件）模拟运行，之后即可打包，需要编写一清单文件（清单文件参考CLDC/MIDP规范），用jar工具（来自J2SE）把预验证后的类文件、资源文件、清单文件打包。 <br><br>
要发布应用程序还需要编写一描述文件（JAD），JAD的要求同清单文件一致，可以自定义参数供应用程序调用。其中一个参数MIDlet-Jar-
URL以URL方式指向JAR文件，移动终端设备通过JAM连接网络获取JAD，下载MIDlet-Jar-URL指向的JAR到设备中，通常JAM要先
判断JAD与清单文件是否一致，应用程序是否有效，然后才决定下载。 <br><br>　　运行时执行环境、JAR包、JAD文件和应用程序生命周期，这些要素构成MIDlet套件，由JAM管理，每个MIDlet套件可包含一个或多个MIDlet。 <br><br>　　上面是一个MIDP应用程序开发的关键点，具体的开发方法及开发工具大致分为如下几种： <br><br>　　Ⅰ. 基本开发工具 <br><br>
最基本的开发方式是下载SUN提供的CLDC/MIDP参考实现及源代码，可根据需求编译生成一个CLDC/MIDP实现，并移植到设备上。配置好开发
环境（CLDC/MIDP实现、JDK1.3）后即可采用上述方法和工具进行开发，多采用命令行方式，这是最原始的方法。 <br><br>　　Ⅱ. J2MEWTK开发工具 <br><br>
这是SUN提供的便捷开发工具，用于Windows环境，同样需要先安装JDK1.3。源程序仍需要使用常规的文本编辑器，把编辑好的源文件及资源文件
按一定要求放在规定目录下，J2MEWTK所提供的是菜单或按钮方式的命令。J2MEWTK中有相应的编译（和预验证一个步骤）、打包、模拟运行的菜单
（或按钮），以及其它辅助工具。 <br><br>　　Ⅲ. IDE工具 <br><br>　　可以使用Forte For Java、JBuilder等IDE工具和J2MEWTK集成使用，它们除了有J2MEWTK的功能外，就是提供有可视化的开发工具。 <br><br>3. 使用JBuilder MobileSet <br><br>
JBuilder是Java程序员常用工具之一，在于它强大的可视化编程工具，集成的编译、运行和调试环境。要为JBuilder提供J2ME无线应用
开发支持，需要在JBuilder基础之上安装MobileSet，建议安装2.0版，当前支持CLDC/MIDP的1.0.3版本，而JBuilder
的版本应该是6。JBuilder MobileSet 2可从下面网址免费下载： <br><br>　　http:
//www.borland.com/jbuilder/mobileset/
同时还要下载相应的MobileSet序列号和许可密钥（免费），根据提示安装MobileSet并注册后，运行JBuilder会找到
"Help|MobileSet Guilde"菜单项。使用菜单"File-&gt;New..."打开"Object
Gallery"对话框，会出现一个新的页面标签"Micro"，此时图标"MIDlet"和"MIDP
Displayable"是灰色的，只有生成一个MIDP项目后才能使用这两个图标。 <br><br>　　3.1 JBuilder MobileSet的特征 <br><br>　　JBuilder MobileSet是一个开放工具，能够与其它供应商提供的J2ME开发工具包集成在一起，当前提供了对下列厂商工具包的支持： <br><br>　　Sun提供的J2ME无线开发工具包1.0.3版（J2MEWTK） <br><br>　　诺基亚的J2ME开发套件（http://forum.nokia.com/） <br><br>　　西门子的SMTK开发工具包（http://www.siemens-mobile.de/） <br><br>　　其中J2MEWTK已经包含在MobileSet 2的安装文件中，如果要使用J2MEWTK提供的开发类库，并且还没有安装J2MEWTK，可以在安装MobileSet 2时选择完全安装。MobileSet 2提供了下列辅助开发的工具： <br>　 <br>　　用于CLDC/MIDP类的CodeInsight工具 <br><br>　　类/包浏览器 <br><br>　　JDK转换工具 <br><br>　　动态适配到任何J2ME简表，包括MIDP <br><br>
和开发其它Java应用程序一样，JBuilder通过MobileSet提供了快速开发模板，包括MIDP项目模板，MIDP
Displayable模板，MIDlet模板。它提供了RAD（快速应用开发）的可视设计器，支持MIDP
UI元素。通过MobileSet还支持MIDP应用程序打包和OTA配置（Over the
Air，上载和下载文件和MIDlet套件，用来配置应用程序到设备上）。 <br><br>　　MobileSet能够用在JBuilder的个人版、专家版和企业版，但是一些功能不能用在个人版如JDK设置切换，打包器等。 <br><br>　　3.2 配置JDK <br><br>
前面已提到编译MIDP应用程序时需要设置特定的CLDC/MIDP类库，以避免使用默认的J2SE类库，在JBuilder中同样要进行类似设置。这
是通过JDK配置选项实现的，JBuilder的设计独立于JDK，尽管每个JBuilder版本发布时会默认安装一个当时较新的JDK（类库），但还可
以通过它的配置机制设置其它JDK，包括旧版本、更新版本或者OEM版的JDK，从而实现了JBulder的扩展性。 <br><br>　　专家版和企
业版的JBuilder可同时配置多个JDK，根据需要设置其中一个为默认即可，而个人版的却要在需要时重新配置每个JDK。安装MobileSet后可
选择安装J2MEWTK、诺基亚和西门子的JDK，然后为设置的每个JDK自定义一个名称，并把其主目录指向这个JDK中\bin的父目录，需要注意的是
JDK目录中不能有空格如c:\Program Files\ J2mewtk。 <br><br>　　3.3 MIDP项目 <br><br>
JBuilder开发都以项目概念为中心，项目文件包含一个（属于这个项目的）文件列表以及项目属性，其中项目属性包括项目模板、缺省路径、类库和连接配
置等，JBuilder使用这些信息加载、保存、编译和运行项目。使用Jbuilder开发环境添加、移除文件，或者设置、更改项目属性都会更改项目文
件。可以在项目面板中看到项目文件作为主节点显示。 <br><br>　　生成项目的便捷方式是使用项目模板工具，可用来设置项目名称、类型和模板，以及JDK、工作目录、备份路径和编译输出路径等。其中项目类型可选择.jpx或者.jpr，二者内容一样，区别是前者使用XML格式文件，因此适合于共享的项目。 <br><br>
而JDK则是前面所设置中的一个，并且只有选择CLDC/MIDP的JDK才能使用Object
Gallery中的Micro选项。每个项目至少一个MIDlet主类，所以首先应使用MIDlet模板生成一个MIDlet主类。通过模板可以设置这个
主类的类名、标题、屏幕类型和命令处理方式，其中屏幕类型有4个选择： <br><br>　　(javax.microedition.lcdui.)Canvas、Form、List、TextBox，只有Form的扩展类才能添加其它的组件（Item的子类）。命令处理方式也有4个选择： <br><br>　　Ⅰ. -- 通过其它的类设置commandListener，比如MIDlet类。 <br><br>　　Ⅱ. Interface implementation -- 生成一个类并在类中实现commandListener接口，这种方式生成的类的大小会比适配器方式生成的小。 <br><br>　　Ⅲ. Standard adapter -- 这种方式生成的代码采用标准适配器的形式： <br><br><br>class Foo { <br>private void jbInit() { <br>addListener(new Adapter(this)); <br>} <br>} <br>class Adapter { <br>... <br>} <br><br>　　Ⅳ. Anonymous adapter -- 这种方式生成的代码采用匿名适配器的形式： <br><br><br>class Foo { <br>private void jbInit() { <br>addListener(new Listener() { <br>... <br>}); <br>} <br>} <br><br>　　后两种适配器形式可以通过项目属性"Code Style"设置。如果要在这个MIDP应用程序中添加更多的屏幕，可以使用Displayable模板添加，或者通过MIDlet模板添加更多的MIDP应用程序到项目中。 <br><br>　　生成应用程序框架后，就可根据本文第2部分要求添加所需代码，并使用JBuilder提供的便捷方式进行编译（预验证）、打包、模拟运行和发布，JBuilder提供有内置web服务器和ftp服务器，以方便开发者测试应用程序的发布。 <br><br>
如果使用MIDlet或Displayable模板生成一个Form类型的Displayable对象，则可以使用JBuilder的"MIDP设计器
"定制用户界面，即从组件板上以拖拉方式生成UI元素，可用鼠标调整这些元素的位置或者进行复制、删除等操作，这就是JBuilder强大功能之所在。
<br><br>　　如果是使用模板生成Displayable类，会自动生成jbInit()方法，当在Form中添加UI元素时，设计器会把代码添加
进jbInit()方法。如果希望打开一个现有Displayable类到设计器，它已经有UI元素，但是没有jbInit()方法，首先需要生成一个
jbInit()方法，然后把所有的UI元素转移进去。 <img src ="http://www.blogjava.net/wqnashqu/aggbug/45257.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2006-05-09 18:17 <a href="http://www.blogjava.net/wqnashqu/archive/2006/05/09/45257.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>