<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>stormnic</title>
    <description></description>
    <link>http://stormnic.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>JFreeChart</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/167966" style="color:red;">http://stormnic.javaeye.com/blog/167966</a>&nbsp;
          发表时间: 2008年03月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          JFreeChart是一个Java开源项目，是一款优秀的Java图表生成器插件，它提供了在Java Application,Servlet和JSP下生成各种图片格式的表格。<br /><br />包括柱形图、线图、区域图、时序图和多轴图。
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/167966#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 04 Mar 2008 22:37:25 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/167966</link>
        <guid>http://stormnic.javaeye.com/blog/167966</guid>
      </item>
      <item>
        <title>JDBC URL</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/156520" style="color:red;">http://stormnic.javaeye.com/blog/156520</a>&nbsp;
          发表时间: 2008年01月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          JDBC URL提供了一种表示数据库的方法，可以使相应的驱动程序能识别该数据库并与之建立连接。驱动程序编程员决定用什么URL来标识特定的驱动程序，而用户只需要使用与所用的驱动程序一起提供的URL即可。<br />JDBC URL的标准语法如下所示：<br />jdbc:&lt;子协议>:&lt;子名称><br /><br />jdbc:协议.JDBC URL中的协议总是jdbc.<br />&lt;自协议>:驱动程序名或数据库连接机制的名称.<br />&lt;子名称>:一种标识数据库的方法.
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/156520#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 16 Jan 2008 16:00:15 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/156520</link>
        <guid>http://stormnic.javaeye.com/blog/156520</guid>
      </item>
      <item>
        <title>触发器</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/153744" style="color:red;">http://stormnic.javaeye.com/blog/153744</a>&nbsp;
          发表时间: 2008年01月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在SQL Server中触发器是一种特殊类型的存储过程。当使用DML语句时，SQL Server将自动执行这一特殊类型的存储过陈。触发器是一种事件机制，它需要触发事件和触发动作。<br />    所谓触发事件，是指那些是的触发器开始执行的操作。所谓触发动作，是指触发事件出现时需要执行的代码段。<br />    SQL Server中把触发器分为以下5种类型：<br />（1）INSERT：当往表中插入数据时，这类触发器被激活。<br />（2）UPDATE: 当修改表中的数据时，这类触发器被激活。<br />（3）DELETE：当输出表中的数据时,这类触发器被激活。<br />（4）ISNTEAD OF：该类型的触发器是替代触发语句的标准操作，它总是在执行插入、修改和删除操作之前被执行。<br />（5）AFTER:该类型的触发器则是在触发动作完成之后被激活。<br /><br />创建触发器：<br />CREATE TRIGGER &lt;触发器名><br />ON {&lt;表名>|&lt;视图名>}<br />{FOR|INSTEAD OF|AFTER}<br />{[UPDATE][,][INSERT][,][DELETE]}<br />AS {&lt;SQL语句>|&lt;语句块>}
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/153744#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 07 Jan 2008 19:37:06 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/153744</link>
        <guid>http://stormnic.javaeye.com/blog/153744</guid>
      </item>
      <item>
        <title>常用的数据库对象</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/153490" style="color:red;">http://stormnic.javaeye.com/blog/153490</a>&nbsp;
          发表时间: 2008年01月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          索引是辅助数据，它的作用是帮助用户在数据库中快速定位要查询的数据行。索引是由索引项和索引指针两部分组成。 索引项是指要查找的关键字段；索引指针是索引表指向对应数据项的地址。 索引在SQL Server中的存储结构是B+树 SQL Server中奖B+树索引类型分为以下两种：（1）聚集索引：在索引存储结构B+树的叶节点上不仅存储索引项，而且还要存储针对本行的所有数据。（2）非聚集索引：在索引存储结构B+树的叶节点上只存储索引项和ROWID，表中数据行是与索引存储结构分开的。 存储过程使用SQL语句管理存储过程：在SQL Server中，使用CREATE PROCEDURE语句建立存储过程，其常用语法格式为：<pre name="code" class="sql">CREATE PROC[EDURE]&lt;存储过程名> [{@&lt;参数名>&lt;数据类型>[OUTPUT]}] AS {&lt;SQL语句>|&lt;语句块>}</pre> 为了设计常用的存储过程，这里简要介绍常用的SQL扩展控制语句：<br />1.语句块<br />在一个语句块中允许使用一个或者多个SQL语句。每一个语句以BEGIN关键字开始，以END关键字结束，其常用格式如下：<br />BEGIN<br />  &lt;语句><br /> ....<br />END<br /><br />2 IF语句<br />IF语句是一个条件判断语句,一般语法格式如下:<br />IF&lt;逻辑表达式><br />  {&lt;SQL语句>|&lt;语句块>}<br />[ELSE<br />   {&lt;SQL语句>|&lt;语句块>}]<br />其中逻辑表达式也可以是SQL语句<br /><br />3.局部变量<br />局部变量使用于在处理过程中存储计算数据的.每一个局部变量在使用之前必须使用DECLARE语句进行说明。<br />使用SET语句对变量执行赋值。<br /><br />4.return语句<br />RETURN语句用于无条件终止一个查询、存储过程或者批处理的执行。在RETURN 之后的语句不会被执行，如果RETURN语句中有证书表达式，则会返回一个整数值。<br />RETURN[&lt;整数表达式>]<br /><br />除了以上常用的SQL扩展语句外，还有如下一些扩展语句：<br />（1）CASE语句<br />（2）WHILE..CONTINUE..BREAK:循环语句<br />（3）GOTO语句，转移语句<br />（4）WAITFOR语句，暂停执行语句。
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/153490#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 06 Jan 2008 16:12:47 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/153490</link>
        <guid>http://stormnic.javaeye.com/blog/153490</guid>
      </item>
      <item>
        <title>manifest.mf的一点理解[转载]</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/152169" style="color:red;">http://stormnic.javaeye.com/blog/152169</a>&nbsp;
          发表时间: 2008年01月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          转载http://hi.baidu.com/lkdlhw_2000/blog/item/195519663df40920aa184ceb.html<br />    今天发现自己项目下存在commons-logging-1.1.jar和commons-logging.jar两个类包，就想看看commons-logging.jar包中的版本，<br />使用winwar打开类包，从META-INF文件夹下面MANIFEST.MF文件中查看相关信息，具体内容如下：<br />    Manifest-Version: 1.0<br />    Ant-Version: Apache Ant 1.5.3 <br />    Created-By: Blackdown-1.3.1_02b-FCS (Blackdown Java-Linux Team)<br />    Extension-Name: org.apache.commons.logging<br />    Specification-Vendor: Apache Software Foundation<br />    Specification-Version: 1.0<br />    Implementation-Vendor: Apache Software Foundation<br />    Implementation-Version: 1.0.4<br />平日里只知道使用类包，还真没有仔细的看过该文件的信息，通过查看资料，自己写一下自己对这个文件的认识，仅仅是个人理解：<br />    //用来定义manifest文件的版本。<br />    Manifest-Version: 1.0    <br />    //个人理解：构建该类包使用的ANT版本。<br />    Ant-Version: Apache Ant 1.5.3   <br />    //声明该文件的生成者，一般该属性是由jar命令行工具生成的，例如：Created-By: Apache Ant 1.5.1。（这是抄的别人的理解）<br />    //个人理解：这里的“Blackdown Java-Linux Team”可能指的是一个团队。<br />    Created-By: Blackdown-1.3.1_02b-FCS (Blackdown Java-Linux Team) <br />    //该属性定义了jar文件的标识，自己还不是很理解“jar文件的标识”这个概念。<br />    Extension-Name: org.apache.commons.logging<br />    //个人理解：规范(接口)的制订人或者组织<br />    Specification-Vendor: Apache Software Foundation<br />    //个人理解：规范(接口)的版本。<br />    Specification-Version: 1.0<br />    //个人理解：该实现类的实现人或者组织<br />    Implementation-Vendor: Apache Software Foundation<br />    //个人理解：该实现类的具体版本，同样的规范版本不同的实现版本说明了实现类所能够实现的功能没有变<br />    //（规范(接口)没有变化,但是实现细节发生了变化，可能会从性能等方面做了提升）。<br />    Implementation-Version: 1.0.4<br />    <br />以下是参考文件：<br />参考文件：<br />http://hi.baidu.com/tlw_ray/blog/item/7b812ef454036a6cdcc47417.html<br />http://www-128.ibm.com/developerworks/cn/java/j-jar/<br />http://danmao.blogdriver.com/danmao/978761.html<br /><br /><br />下面转：http://hi.baidu.com/tlw_ray/blog/item/7b812ef454036a6cdcc47417.html<br /><br />我平时用mf文件一般说来都是让jar成为可以直接运行这一目的。虽然目的这么简单，但是每次打包还是很容易出现各种各样的问题让人头痛。mf总是没有被应用，或者是出错了。<br /><br />首先给出一个例子：<br /><br />Manifest-Version: 1.0<br />Main-Class: ui.JFrameMain<br />Class-Path: jtds-1.2.jar c3p0-0.9.1.2.jar <br />esri_mo20.jar esri_mo20res.jar jsde83_sdk.jar <br /><br />解释一下：<br /><br />Manifest-Version mf文件版本号，这行照抄<br /><br />Main-Class 包含main函数的类，程序的入口<br /><br />Class-Path 用到的一些包<br /><br />分析一下要点：<br /><br />要点1：每行的“:”(冒号)用来分隔键值对。冒号后边一定要跟一个空格！！！<br /><br />也就是说务必写为:<br /><br />Main-Class:(空格)YouClassName<br /><br />Class-Path:(空格)Class1.Jar<br /><br />否则JBuilder会报("Manifest.mf": Error reading manifest: java.io.IOException: invalid header field<br />)这样的错。不再IDE帮助下做的JAR会发现MF没有起到应有的作用。顺便说一下以前我看到JBuilder报另一个个错大概说是什么换行符不对，好像也是由于这个问题引发的。原先总以为是windows里边的回车是由回车，换行2个字符构成而造成的。现在看来好像不是这样，是因为少了冒号后边那个空格。<br /><br />要点2：Class-Path里边的内容用空格分隔而不是逗号或者分号。（唉。。。我总是下意识的用分号）<br /><br />也就是说务必写成:<br /><br />Class-Path:(空格)Class1.jar(空格)Class2.jar(空格)Class3.Jar<br /><br />要点3:有的文章说MF文件每行不能超过七十多的字符，我的经验是如果在JBuilder里编辑MF超过了也无妨，一般我是尽量一行写完。续行挺麻烦又要以空格开头什么的。我也经常直接用winRar打开jar然后直接编辑里边的mf文件，这是个好方法，很直接了当，缺点就是如果改坏了也不会报错，只是MF有的部分失效了，好像运行时也会说"错误的MF文件版本"。<br /><br />介绍几个技巧：<br /><br />技巧1：使用winRar打开jar，双击MF文件，就可以编辑了，编辑完了Ctrl+S保存。特方便。也可以在外边写好一个Manifest.mf,然后直接拖入覆盖以前的。<br /><br />技巧2：写一个run.bat来运行你的jar。run.bat大体内容如下：<br /><br />java -jar yours.jar<br /><br />pause<br /><br />后边加一个pause就可以让你看到具体哪里出错了，一般来说问题如果出在MF上，那么往往就是哪个包，哪个类没有找到的NoClassDef这种异常。
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/152169#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 01 Jan 2008 17:28:36 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/152169</link>
        <guid>http://stormnic.javaeye.com/blog/152169</guid>
      </item>
      <item>
        <title>java多线程编程（未完成）</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/152157" style="color:red;">http://stormnic.javaeye.com/blog/152157</a>&nbsp;
          发表时间: 2008年01月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          java多线程编程
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/152157#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 01 Jan 2008 14:42:48 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/152157</link>
        <guid>http://stormnic.javaeye.com/blog/152157</guid>
      </item>
      <item>
        <title>从Eclipse中导出Jar包并声称EXE文件</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/152081" style="color:red;">http://stormnic.javaeye.com/blog/152081</a>&nbsp;
          发表时间: 2007年12月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1.下载Fat Jar插件<br /><br />2. 安装之后，右键选择项目时，会出现Build Fat Jar  ，选择该方法，然后按照向导即可一步步导出可执行jar文件。<br /><br />   如果有外部的jar包，比如说sqljdbc.jar，则把所有要使用的第三方的jar包都复制到{Java_home}\jre\lib\ext 目录下。（必须重新启动Eclipse才能加载这些jar包）而象SWT项目这样所使用的jar包，则不需要这么设置，直接在向导中选择所需要的jar包即可。<br /><br />3.然后就可以在导出目录中运行这个可执行jar包，但如果是SWT项目，则必须在包含该可执行jar包的目录下有一个swt-win32-3235.dll之类的文件。<br /><br />4.有了可执行的jar文件，然后可以使用exe4j.exe之类的jar转exe软件，如果使用exe4j.exe则当调用到sqljdbc.jar之类的外部包时，则必须将sqljdbc.jar也一并导入。安装向导就可以生成exe文件了，如果是SWT项目则也必须在同目录下有swt-win32-3235.dll之类的文件。<br /><br /><br /><br /><br />引用自：http://tb.blog.csdn.net/TrackBack.aspx?PostId=1687113
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/152081#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 31 Dec 2007 20:54:21 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/152081</link>
        <guid>http://stormnic.javaeye.com/blog/152081</guid>
      </item>
      <item>
        <title>单击菜单退出程序代码（未完成）</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/152077" style="color:red;">http://stormnic.javaeye.com/blog/152077</a>&nbsp;
          发表时间: 2007年12月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          未完等待输入
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/152077#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 31 Dec 2007 19:52:57 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/152077</link>
        <guid>http://stormnic.javaeye.com/blog/152077</guid>
      </item>
      <item>
        <title>JDBCAdapter介绍</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/151821" style="color:red;">http://stormnic.javaeye.com/blog/151821</a>&nbsp;
          发表时间: 2007年12月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1.JDBCAdapter功能<br />JDBCAdapter将JDBC接口封装成TableModel接口，它实现以下功能：<br />（1）根据用户传入的参数，连接数据库。（详见JDBCAdapter构造函数）<br />（2）查询数据库，将查询结果封装为表格模型数据，并通知所有表格模型监听器（listerner）表格数据改变。（详见executeQuery函数）。<br />（3）在该类的对象被垃圾回收器回收时，关闭数据库连接（详见finalize函数，注意这个函数由垃圾回收器调用）。<br />（4）实现TableModel接口的函数。（详见getColumnName，getColumnClass函数）。<br /><br />2.如何使用JDBCAdapter<br />首先，使用如下代码构造一个JDBCAdapter对象：<br /><pre name="code" class="java">String url="jdbc:odbc:Person";
String dirverName="sun.jdbc.odbc.JdbcOdbcDriver";
String username="";
String password="";
adapter=new JDBCAdapter(url,driverName,userName,password);</pre><br /><br />其次，由于JDBCAdapter集成了AbstractTableModel类，因此，可以使用JDBCAdapter类的实例构造一个JTable对象：<br /><pre name="code" class="java">table=new JTable(adapter);</pre><br /><br />最后，当需要查询数据库时，调用executeQuery实现数据查询功能<br /><pre name="code" class="java">adapter.executeQuery(inputQuery.getText());</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/151821#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 29 Dec 2007 15:31:13 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/151821</link>
        <guid>http://stormnic.javaeye.com/blog/151821</guid>
      </item>
      <item>
        <title>ResultSetMetaData</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/151780" style="color:red;">http://stormnic.javaeye.com/blog/151780</a>&nbsp;
          发表时间: 2007年12月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          ResultSetMetaData与DriverManager、Connection、Statement、ResultSet一样，是JDBC API的组成部分。该类用于获取ResultSet记录的元数据，例如列名、列的数目、列所属的数据库表。<br /><br />代码<br /><pre name="code" class="java">

   ResultSetMetaData rsmd=rs.getMetaData();
   for(int i=1;i&lt;=rsmd.getColumnCount();++i)
        columnHeads.addElement(rsmd.getColumnName(i));</pre><br /><br />通过ResultSet获取ResultSetMetaData类型的变量rsmd，进而获取获取各列的列名，添加至Vector类型的变量columnHeads中。
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/151780#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 29 Dec 2007 14:15:17 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/151780</link>
        <guid>http://stormnic.javaeye.com/blog/151780</guid>
      </item>
      <item>
        <title>vector 基础知识</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/151775" style="color:red;">http://stormnic.javaeye.com/blog/151775</a>&nbsp;
          发表时间: 2007年12月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          vector类实现了对象数据的功能，并且数组大小可变。随着加入其中的元素增多，数组逐渐变大；在删除了一个元素之后，数组又随之变小。<br /><br />vector有三个构造函数：<br /><pre name="code" class="java">
public Vector(int initialCapacity,int capacityIncrement);
public Vector(int initialCapacity);
public Vector();</pre><br /><br />Vector运行时创建一个厨师的存储容量initialCapacity，存储容量是以capacityIncrement变量定义的增量增加的。存储容量使用默认值10。<br /><br />Vector类提供的方法支持两类功能：增加、删除和插入元素；获取向量中元素的数目。<br /><br /><pre name="code" class="java">addElement(Object obj);</pre><br />把元素添加至尾部，向量大小加1；<br /><pre name="code" class="java">insertElementAt(Object obj,int index);</pre><br />把元素添加至指定索引处，此后的元素向后移动一个单位；<br /><pre name="code" class="java">setElementAt(Object obj,int index);</pre><br />把元素以覆盖的方式添加到指定的索引处。<br /><pre name="code" class="java">removeElement(Object obj);</pre><br />把向量中第一次出现的obj元素一走；<br /><pre name="code" class="java">removeAllElements();</pre><br />把向量所有元素移走。
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/151775#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 29 Dec 2007 14:04:48 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/151775</link>
        <guid>http://stormnic.javaeye.com/blog/151775</guid>
      </item>
      <item>
        <title>内部类</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/151698" style="color:red;">http://stormnic.javaeye.com/blog/151698</a>&nbsp;
          发表时间: 2007年12月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Java内部类
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/151698#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 29 Dec 2007 10:12:55 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/151698</link>
        <guid>http://stormnic.javaeye.com/blog/151698</guid>
      </item>
      <item>
        <title>Java表格的使用</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/151672" style="color:red;">http://stormnic.javaeye.com/blog/151672</a>&nbsp;
          发表时间: 2007年12月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在Swing中，表格分解为表格界面（Jtable）和表格模型（TableModel）两部分。JTable控制着数据的显示方式，而TableModel控制的则是数据本身。
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/151672#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 29 Dec 2007 09:24:32 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/151672</link>
        <guid>http://stormnic.javaeye.com/blog/151672</guid>
      </item>
      <item>
        <title>从操作系统看数据库</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/151630" style="color:red;">http://stormnic.javaeye.com/blog/151630</a>&nbsp;
          发表时间: 2007年12月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          了解SQL　Server的数据库结构：<br /><br />       每一个SQL Server数据库都是一组操作系统文件。数据库文件分为：（1）数据文件：保存数据和对象；（2）日志文件：保存事务日志信息；<br /><br />       一个数据库可以使用以下三种文件类型：<br /><br />       （1）主数据文件：保存数据库及其系统表和对象的所有启动信息，主数据文件的扩展名是.mdf。<br /><br />      （2）辅助数据文件：用于保存主数据文件未存储的数据和对象，辅助数据文件的扩展名是.ndf。<br /><br />       （3）事务日志文件：保存用于恢复数据库的事务日志信息，事务日志文件的扩展名是.ldf。
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/151630#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 28 Dec 2007 21:57:54 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/151630</link>
        <guid>http://stormnic.javaeye.com/blog/151630</guid>
      </item>
      <item>
        <title>SQL Server中的管理用户登录</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/151628" style="color:red;">http://stormnic.javaeye.com/blog/151628</a>&nbsp;
          发表时间: 2007年12月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          “安全性”选项组主要用于数据库服务器的安全设置，包括两部分内容：身份验证和审核级别。<br /><br />       审核级别是指审核记录已经发生的事件情况。关于安全的限制主要体现在事前和事后两种状态。事前是指在执行操作之前必须验明身份，确保可以执行指定的操作。<br /><br />       应用SQL Server建立登录账户。建立SQL Server登录有三种方法：<br /><br />       （1）使用【登录向导】<br /><br />        （2）使用【企业管理器】<br /><br />       （3）使用SQL语句
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/151628#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 28 Dec 2007 21:57:04 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/151628</link>
        <guid>http://stormnic.javaeye.com/blog/151628</guid>
      </item>
      <item>
        <title>svn简介</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/151626" style="color:red;">http://stormnic.javaeye.com/blog/151626</a>&nbsp;
          发表时间: 2007年12月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          SVN简介 <br />　　SVN站在更高层次上对现在的安全产品，从系统和控制的角度进行了"有机"和"无隙"的整合。<br />　　SVN是一个安全虚拟网络系统，它将系统整体的信息安全功能均衡合理地分布在不同的子系统中，<br />　　使各子系统的功能得到最大限度的发挥，子系统之间互相补充，系统整体性能大于各子系统功能之和，用均衡互补的原则解决了"木桶原理"的问题。<br />　　SVN能在跨接Internet, Intranet, Extranet间的网络所有端点实现全面的安全，而且还能提供基于企业策略的信息管理机制以充分有效地利用有限的带宽。SVN可以满足各种企业VPN的要求，通过为公司内部网络、远程和移动用户、分支机构和合作伙伴提供基于Internet的安全连接。所以，我们可以将SVN看成是VPN、防火墙、基于企业策略的信息管理软件集成在一起的Internet安全的综合解决方案。在这样一个网络系统中，所有互联网服务器端和客户端都是安全的，并有一个信息管理机制以不断地通过这个外部网络环境动态地分析及满足客户的特定带宽需求。SVN提供了目前基于网络实现的eBusiness 应用的安全服务，它包含：<br />　　对多种应用进行全面的安全认证；<br />　　支持多种认证及PKI<br />　　功能强大并对用户透明的通讯加密；<br />　　面向用户的集中安全策略管理；<br />　　统一跨接Internet、Intranet、Extranet的通讯。<br />　　完整的SVN体系结构应包括以下部分：<br />　　带有防火墙的VPN网关，它是一个将防火墙和VPN技术紧密结合的网关产品；<br />　　SVN安全远程客户端软件包，一个功能强大的VPN客户端软件，支持台式机用户、远程用户和移动用户，具有集中化管理的个人防火墙功能和VPN用户的安全认证功能；<br />　　SVN证书管理模块，一个用于SVN的完整PKI解决方案，它将完善的CA和LDAP目录服务器技术集成在一起；<br />　　SVN硬件加密卡，可以通过硬件技术实现功能强大的各种算法以提高VPN的速度和性能；<br />　　SVN智能带宽管理模块，一个基于企业策略的带宽管理解决方案，可以智能地管理有限的带宽资源，以确保用于企业重要应用的VPN性能可靠；<br />　　SVN冗余管理模块，通过冗余网关集群和防火墙VPN内的SVN冗余模块，对执行重要任务的VPN和防火墙应用在出现故障时实现无缝切换。<br />　　自动地址转换模块，一个自动管理IP地址和命名的解决方案，通过提供IP地址服务的跟踪和集中化管理，确保可靠地控制地址分配和提高TCP/IP管理效率；<br />　　SVN安全服务器软件包，专门保护单个应用服务器安全的VPN网关软件，它可以保护进行敏感操作的服务器免受攻击和未授权的访问，使客户端建立与服务器间的安全认证和支持交换加密数据的连接；<br />　　SVN安全客户端软件包，它将基于状态检测的防火墙和基于IPSec的VPN客户端软件集成在客户端机器上，通过提供集中管理的个人防火墙和对所有企业VPN用户的安全认证，增强客户端机器的安全性。它与　　SVN安全远程客户端软件功能相比，增强了客户端的安全功能，如访问控制和安全初始化控制等。<br /><br />本文来自: 大鹏天空(www.rocsky.net) 详细出处参考：http://www.rocsky.net/free-resources/free-information/about-svn
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/151626#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 28 Dec 2007 21:53:15 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/151626</link>
        <guid>http://stormnic.javaeye.com/blog/151626</guid>
      </item>
      <item>
        <title>如何选择配置管理工具</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/151625" style="color:red;">http://stormnic.javaeye.com/blog/151625</a>&nbsp;
          发表时间: 2007年12月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          每一个软件项目，无论是工程类项目，还是产品类项目，都必须经历需求分析、系统设计、编码实现、集成测试、部署、交付、维护和支持的过程。在这个过程中，将生成各种各样不同的工件，包括文档、源程序、可执行代码、支持库。更可怕的是，频繁出现的变更是不可避免的，因此面向如此庞大且不断变动的信息集，如何使其有序、高效地存放、查找和利用就成为了一个突出的问题。<br />　　针对这一问题，最早的开发人员尝试过的解决办法是通过手工来实现：<br />　　1)文档：每次修改时都另存为一个新的文件，然后通过文件名进行区分，例如"XXX 软件需求说明书V1.0，XXX软件需求说明书V1.1，XXX 软件需求说明书V2.0."，并且在文件中注明每次版本变化的内容；<br />　　2) 源代码：每次要修改时就将整个工程目录复制一份，将原来的文件夹进行改名，例如"XX 项目V1.0、XX 项目1.01、."，然后在新的目录中进行修改；<br />　　但是这种方法，不仅十分繁琐，容易出错，而且会带来大量的垃圾数据。如果是团队协同开发或者是项目规模较大时，还是会造成很大的混乱。很显然，这样简陋的方法是无法应对这一问题的。<br />　　后来，有人尝试从制造工业领域引入了"配置管理"这一概念，通过不懈的研究与实践，最终形成了一套管理办法和活动原则，这也就是软件配置管理。<br />　　通过软件配置管理，将对软件系统中的多重版本实施系统的管理；全面记载系统开发的历史过程，包括为什么修改，谁作了修改，修改了什么；管理和追踪开发过程中危害软件质量以及影响开发周期的缺陷和变化。并对开发过程进行有效地管理和控制，完整、明确地记载开发过程中的历史变更，形成规范化的文档，不仅使日后的维护和升级得到保证，而且更重要的是，这还会保护宝贵的代码资源，积累软件财富，提高软件重用率，加快投资回报。<br />　　正如前面所述，由于软件配置管理过程十分繁杂，管理对象错综复杂，如果是采用人工的办法不仅费时费力，还容易出错，产生大量的废品。因此，引入一些自动化工具是十分有裨益的，这也是做好配置管理的必要条件。<br />　　正是因为如此，市场上出现了大量的自动化配置管理工具，这些工具的实现原理与基本机制均十分接近，但由于其定位不同，因此各有特点，下面我们就对一些常见的配置管理工具做一简单的介绍。<br />　　元老：CCC、SCCS、RCS<br />　　上个世纪七十年代初期加利福利亚大学的Leon Presser教授撰写了一篇论文，提出控制变更和配置的概念，之后在1975年，他成立了一家名为SoftTool的公司，开发了自己的配置管理工具：CCC，这也是最早的配置管理工具之一。<br />　　在软件配置管理工具发展史上，继CCC之后，最具有里程碑式的是两个自由软件：Marc Rochkind 的SCCS (Source Code Control System) 和Walter Tichy 的RCS (Revision Control System)，它们对配置管理工具的发展做出了重大的贡献，直到现在绝大多数配置管理工具基本上都源于它们的设计思想和体系架构。<br />　　中坚：Rational ClearCase<br />　　Rational 公司是全球最大的软件CASE 工具提供商，现已被IBM收购。也许是受到其拳头产品、可视化建模第一工具Rose 的影响，它开发的配置管理工具ClearCase 也是深受用户的喜爱，是现在应用面最广的企业级、跨平台的配置管理工具之一。<br />　　ClearCase提供了比较全面的配置管理支持，其中包括版本控制、工作空间管理、Build管理等，而且开发人员无需针对其改变现有的环境、工具和工作方式。<br />　　其最大的缺点就在于其价格不菲，每个客户端用户许可证大约需要几千美金，所以在国内应用群体有限。<br />　　1） 版本控制<br />　　ClearCase不仅可以对文件、目录、链接进行版本控制，同时还提供了先进的版本分支和归本功能用于支持并行开发。另外，它还支持广泛的文件类型。<br />　　2）工作空间管理<br />　　可以为开发人员提供私人存储区，同时可以实现成员之间的信息共享，从而为每一位开发人员提供一致、灵活、可重用的工作空间域。<br />　　3） Build管理<br />　　对ClearCase 控制的数据，既可以使用定制脚本，也可使用本机提供的make 程序。<br />　　其最大的缺点就在于其价格不菲，每个客户端用户许可证大约需要几千美金，所以在国内应用群体有限。<br />　　新秀：Hansky Firefly<br />　　做为H a n s k y 公司软件开发管理套件中重要一员的Firefly，可以轻松管理、维护整个企业的软件资产，包括程序代码和相关文档。Firefly是一个功能完善、运行速度极快的软件配置管理系统，可以支持不同的操作系统和多种集成开发环境，因此它能在整个企业中的不同团队，不同项目中得以应用。<br />　　Firefly基于真正的客户机/服务器体系结构，不依赖于任何特殊的网络文件系统，可以平滑地运行在不同的LAN、WAN 环境中。它的安装配置过程简单易用，Firefly 可以自动、安全地保存代码的每一次变化内容，避免代码被无意中覆盖、修改。项目管理人员使用Firefly可以有效地组织开发力量进行并行开发和管理项目中各阶段点的各种资源，使得产品发布易于管理；并可以快速地回溯到任一历史版本。系统管理员使用Firefly的内置工具可以方便的进行存储库的备份和恢复，而不依赖于任何第三方工具。<br />　　开源奇葩：CVS<br />　　CVS 是Concurrent Versions System 的缩写，它是开放源代码软件世界的一个伟大杰作，由于其简单易用、功能强大，跨平台，支持并发版本控制，而且免费，它在全球中小型软件企业中得到了广泛使用。<br />　　其最大的遗憾就是缺少相应的技术支持，许多问题的解决需要自已寻找资料，甚至是读源代码。<br />　　小工作组级：Merant PVCS<br />　　MERANT 公司的PVCS 能够提供对软件配置管理的基本支持，通过使用其图形界面或类似SCCS 的命令，能够基本满足小型项目开发的配置管理需求。PVCS 虽然功能上也基本能够满足需求，但是其性能表现一直较差，逐渐地被市场所冷落。<br />　　入门级：Microsoft Visual Source Safe<br />　　Visual Source Safe，即VSS，是微软公司为Visual Studio配套开发的一个小型的配置管理工具，准确来说，它仅能够称得上是一个小型的版本控制软件。VSS的优点在于其与Visual Studio实现了无缝集成，使用简单。提供了历史版本记录、修改控制、文件比较、日志等基本功能。<br />　　但其缺点也是十分明显的，只支持Windows平台，不支持并行开发，通过Check out - Modify - Check in的管理方式，一个时间只允许一个人修改代码，而且速度慢、伸缩性差，不支持异地开发。甚至于微软本身也不采用其做为配置管理工具，而是使用一个名为SLM 的内部工具。　　面对这些形形色色，各有千秋的配置管理工具，如何根据组织特点、开发团队需要，选择切合适用的工具呢？笔者就结合工作实践中的经验与大家做一些交流与探讨。<br />　　配置管理工具的选择所需考虑的因素大体包括以下几个因素：<br />　　功能是否符合实际需求？是否符合团队特点？性能是否满意？费用是否可以接受？售后服务如何？接下来，我们就这几方面逐一深入地探讨：<br />　　1）功能是否符合实际需求，是否符合团队特点<br />　　工具就是用来帮助您解决问题的，因此功能是否符合实际需求是最重要的判断因素。而大多数主流配置管理工具的基本功能都能够满足，因此主要需要判断以下几个因素： <br />　　并行开发支持<br />　　在团队协作开发过程中，有两种主要的模式：集体代码权和个体代码权。采用集体代码权模式进行开发时，一段代码可能同时会被多个开发人员同时修改；而采用个体代码权模式进行开发时，每一段代码都始终被一个开发人员独享，别人需要修改时也会通过该开发人员完成。<br />　　而配置管理软件针对这一情况，也采用了不同的策略：Copy-Modify-Merge(拷贝、修改、合并) 的并行开发模式、Check out-Modify-Check in（签出、修改、签入）的独占开发模式。在并行开发模式下，开发人员可以并行开发、更改代码，Firefly会自动检测到代码冲突，并自动合并，或提示开发人员手动解决。<br />　　表一、并行开发支持比较表<br />工具名称 说明 <br />ClearCase Copy-Modify-Merge 模式 <br />Firefly Copy-Modify-Merge 模式 <br />CVS Copy-Modify-Merge 模式 <br />PVCS Check out-Modify-Check in 模式 <br />VSS Check out-Modify-Check in 模式 <br />　　异地开发支持<br />　　如果你的开发团队分布在不同的开发地点，就需要对工具的异地开发功能进行仔细的评估了。大多数工具都提供基于Web的界面，用户可以通过浏览器执行配置管理的相关操作，而且有些工具就通过这样的方法来实现对异地开发的支持。<br />　　这种实现方法有太多的局限性，例如网络（Internet）连接带宽的限制、防火墙以及安全问题等。真正意义上的异地开发支持，是指在不同的开发地点建立各自的存储库，通过工具提供同步功能自动或手动同步。这样做的好处是与网络无关，即便各个开发地点之间没有实时连通的网络，也可以通过E-Mail 附件等其它方式将同步包发给对方，实现手动的同步。<br />　　表二异地开发支持比较表<br />工具名称 说明 <br />ClearCase 提供MultiSite 模块，通过自动或手动同步位于不同开发地点的存储库的方式，支持异地开发 <br />Firefly 提供ServerSync 模块，通过自动或手动同步位于不同开发地点的存储库的方式，支持异地开发 <br />CVS 无专门支持的模块 <br />PVCS 无专门支持的模块 <br />VSS 无专门支持的模块 <br />　　值得说明的是，在不同开发点建立各自存储库的方式，主要适用于两个或两个以上位于不同地点的开发团队协作开发的情况。如果仅是采用虚拟团队合作的方式，开发人员以个体的形式散落在不同地方，则更适合通过Internet 直接操作远程的配置管理服务器。<br />　　跨平台开发支持<br />　　如果企业需要从事多个不同平台下的开发工作，就需要配置管理工具能够对跨平台开发提供支持，否则势必会给开发、测试、发布等各个环节带来不便，将使大量的时间被浪费于代码的手工上传、下载中。 <br />　　表三跨平台开发支持比较表 工具名称 说明 <br />ClearCase 支持常见的平台 <br />Firefly 软件本身基于Java开发，可在Windows、Linux、Solaris、HP-UX、AIX等常见平台上使用，平台之间的移植也非常方便 <br />CVS 支持几乎所有的操作系统 <br />PVCS 软件本身基于Java 开发，能够支持常见的平台 <br />VSS 仅支持Windows 操作系统 <br />　　与开发工具的集成性<br />　　配置管理工具与开发工具是编码过程中最常用到两种工具，因此它们之间的集成性直接影响到开发人员的便利性，如果无法良好集成，开发人员将不可避免地在配置管理工具与开发工具之间来回切换。<br />　　表四与开发工具集成性比较表 工具名称 说明 <br />ClearCase 直接与资源管理器集成，十分易用 <br />Firefly 与常见开发工具无缝集成 <br />CVS 对开发工具集成性较差 <br />PVCS 仅支持Windows 操作系统 <br />VSS 与Visual Studio开发工具包无缝连接，其它开发工具集成性差 <br />　　2）性能是否满意<br />　　配置管理工具软件的一些性能指标对于最终的选择也有着至关重要的影响。<br />　　运行性能<br />　　如果开发团队规模不大的情况下，配置管理工具软件的性能不会造成很大影响，但如果项目规模比较大，团队成员逐渐增多的情况下，其运行性能就会带来很大的影响。<br />　　表五运行性能比较表 工具名称 说明 <br />ClearCase 服务器采用多进程机制，使用自带多版本文件系统MVFS，对性能有较大负面影响。做为一款企业级、全面的开发配置管理工具，适用于大型开发团队 <br />Firefly 服务器采用了多线程的应用服务器，性能表现优秀，做为一款企业级、全面的开发配置管理，能适用于50人到上千人的团队 <br />CVS 较高的运行性能，适用于各种级别的开发团队 <br />PVCS 服务器采用文件系统共享方式，对CPU、内存及网络要求较高，性能一般，仅适用于中小型项目团队，不适合于企业级应用 <br />VSS 相对功能单一、简陋，适用于几个人的小型团队，在数据量不大的情况下，性能可以接受 <br />　　易用性<br />　　表六易用性比较表<br />工具名称 说明 <br />ClearCase 安装、配置、使用相对较复杂，需要进行团队培训 <br />Firefly 在提供全面配置管理功能的情况下，安装、配置、使用较为简单，包括安装、配置、培训在内的整个实施周期一般不会超过一个月。 <br />CVS 安装、配置较复杂，但使用比较简单，只需对配置管理做简单培训即可 <br />PVCS 使用比较简单，只需对配置管理做简单培训即可 <br />VSS 安装、配置、使用均较简单，很容易上手使用 <br />　　从用户界面、与开发工具的集成性角度来说，这几款主流的配置管理软件均有较好的设计，均有较好的易用性。<br />　　安全性<br />　　表七安全性比较表 工具名称 说明 <br />ClearCase 采用C/S模式，需要共享服务器上的存储目录以供客户端访问，这将带来一定安全隐患 <br />Firefly 服务器上的存储目录不用共享，对客户端不透明，客户端不可直接访问存储目录，使系统更安全可靠 <br />CVS 采用C/S 模式，不需要共享服务器上的存储目录，安全性较好 <br />PVCS 基于文件系统共享，而且需要以"可写"的权限共享存储目录，存在较大的安全隐患 <br />VSS 基于文件系统共享实现对服务器的访问，需要共享存储目录，这将带来一定安全隐患 <br />　　3）费用是否可以接受<br />　　Rational ClearCase、Hansky Firefly 两款均属于企业级配置管理工具软件,ClearCase价格较贵，，相比之下Hansky Firefly 是一款不错的选择。<br />　　而PVCS其价格大约是每客户端几百美元的水平，对于国内企业来说，性价比不太划算。VSS 是微软打包在Visual Studio开发工具包之中的，显然花费的精力不大，价格也比较便宜，可以做为个人、小项目团队版本控制之用。<br />　　而CVS则是一款完全免费的开源软件，性能较之企业级配置管理工具差距不大，也是一种不错的选择。<br />　　4） 售后服务如何<br />　　表八售后服务比较表<br />工具名称 说明 <br />ClearCase 大型商用软件，已被IBM公司收购，但国内市场拓展有限，因此服务支持会受到限制。现在中国用户的支持是由位于澳大利亚悉尼的支持中心联系 <br />Firefly 大型商用软件，已在中国成立分公司，全面拓展市场之中，在北京设有支持中心 <br />CVS 做为开源软件，无官方支持，需要用户自己查找资料解决技术问题，现在也出现专门为CVS做技术支持的公司 <br />PVCS 在中国市场开拓有限，国内没有支持中心 <br />VSS 做为微软的非核心产品，技术支持有限。在其网站上有提供一些常见问题，只有对正式购买的用户提供一定的技术支持 <br /><br />　　售后服务与产品支持也是一个很重要的考察点，工具在使用过程中出现这样那样的问题是很平常的事，有些是因为使用不当，有些则是工具本身的缺陷。这些问题都会直接影响到开发团队的使用，因此随时能够找到专业技术人员解决这些问题就变成十分重要。<br /><br />　　实例说明<br />　　最后，笔者介绍几个实际的案例，希望对大家选择软件配置管理工具软件有帮助。<br />　　案例一<br />　　某公司拥有10 名专职开发人员以及一些兼职的开发人员，主要从事Windows和Linux 平台下的软件开发，采用的工具包括Visual Studio 系列、GCC 等。为了能够加强版本控制与配置管理工作，决定引入一些自动化配置管理工具。<br />　　经过慎重的选择，采用了两步走的方法：<br />　　1） 首先采用了Visual Studio 软件包中的VSS做为配置管理工具；<br />　　由于VSS安装、配置、操作都十分简单，上手容易，这样在执行配置管理的过程中，工具的培训没有带来太大的阻力，大家可以集中精力理解配置管理。这样很快就在团队中形成了版本控制、配置管理的氛围与习惯。<br />　　2） 然后构建了CVS服务器，做为整个开发组织的配置管理工具；<br />　　CVS 能够有效地支援Windows、Linux 两个平台上的应用开发，其性能优秀，而且免费，另外，它对于兼职人员的配置管理十分有效。采用CVS 至今，效果明显，除了功能、使用上有些不方便之处外，没有出过任何大问题。<br />　　案例二<br />　　北京某公司拥用230名专职开发人员，长期从事金融业务的开发，随着业务的良性发展，在管理上也出现了一些不足：<br />　　1） 开发管理沟通滞后，开发人员孤立操作，变更和维护信息无法实时反馈；<br />　　2） 主管领导对所开发的100 多种产品的项目开发进程不能及时了解，很多资源滞留在个人手中；<br />　　3） 随着产品的需求日益增加，无法快速标识和查找软件的历史版本；<br />　　4） 无法对处于不同开发平台上的项目进行统一管理和资源配置；<br />　　5） 无法实现异地开发团队的协调和沟通。<br />　　因此，该公司决定引入软件配置管理，在配置管理工具软件的选择上，考虑到其人员规模较大，项目较多，工作复杂，在针对可靠性、易用性、稳定性、安全性、技术支持能力以及软件的各功能进行了仔细的综合评估后，最后选择了国内技术支持较到位的Hansky Firefly 软件配置工具软件。<br />　　在采用了Hansky Firefly 之后，有效地解决了这些问题，还帮助其顺利地通过了CMM 2级认证，为企业的进一步发展打下了坚实的基础。<br /><br /><br />－－《程序员》
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/151625#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 28 Dec 2007 21:52:03 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/151625</link>
        <guid>http://stormnic.javaeye.com/blog/151625</guid>
      </item>
      <item>
        <title>布局管理--流式布局</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/151622" style="color:red;">http://stormnic.javaeye.com/blog/151622</a>&nbsp;
          发表时间: 2007年12月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          2007-11-16 14:18      使用流式布局管理器时，GUI组件将按照添加入容器的顺序自左而右排列在一行上，如果一行空间不足，则另起一行。默认情况下，组件是剧中排列的。<br /><br />可以通过改变面板的默认布局管理器来改变组件在每一行上的排列位置。语句示例如下：<br /><br />FlowLayout fl=new FlowLayout（FlowLayout.Right）;<br /><br />p.setLayout(fl);<br /><br />FlowLayout类提供了三构建器public FlowLayout(),public FlowLayout(int alignment)以及public FlowLayout(int alignment,int horizonalGap,int verticalGap);alignment用于指定组件在一行上的对齐方式。horizontalGap和verticalGap分别表示组件在水平和垂直方向上的间距（以像素为单位）。默认情况下呢。alignmen同志的默认取值是FlowLayout.CENTER，horizontalGap和verticalGap的默认取值是5px；
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/151622#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 28 Dec 2007 21:48:38 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/151622</link>
        <guid>http://stormnic.javaeye.com/blog/151622</guid>
      </item>
      <item>
        <title>布局管理器--边框布局</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/151621" style="color:red;">http://stormnic.javaeye.com/blog/151621</a>&nbsp;
          发表时间: 2007年12月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          内容窗格的默认布局管理器是边框布局管理器（BorderLayout）。不仅是内容窗格，任何使用了BoederLayout布局管理器的容器都提供了五个位置用于存放组件。分别是north、south、east和west以及center。<br /><br />     此外如果向同一个位置添加多个组件，那么只有最后一个被添加的组件才是有效的。如果要在同一个位置添加多个组件，则必须构建一个面板，再向面板中添加两个按钮。然后将面板添加到内容窗格的south位置。
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/151621#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 28 Dec 2007 21:47:50 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/151621</link>
        <guid>http://stormnic.javaeye.com/blog/151621</guid>
      </item>
      <item>
        <title>布局管理器--网格布局和网格袋布局</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/151620" style="color:red;">http://stormnic.javaeye.com/blog/151620</a>&nbsp;
          发表时间: 2007年12月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          网格布局管理器（GridLayout）将容器划分为大小相同的网格，把GUI组件向使用了网格布局的容器中添加时，是按自左向右，自上而下的位置存放的。<br /><br />   网格袋（GridBagLayout）和网格布局类似，网格袋布局也是将用户界面划分成若干网格（Grid），不同之处在于：<br /><br />（1）网格袋布局中的每个网格的宽度和高度都是不一样的。<br /><br />（2）每个组件可以占据一个或是多个网络。<br /><br />（3）可以指定组件在网格中的停靠位置。<br /><br />当将一个GUI组件添加到使用了GridBagLayout的容器中，需要指定该组件的位置、大小以及缩放等一系列的约束条件。可以使用一个GridBagConstrains类型的对象存储这些约束条件。
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/151620#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 28 Dec 2007 21:47:10 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/151620</link>
        <guid>http://stormnic.javaeye.com/blog/151620</guid>
      </item>
      <item>
        <title>布局管理器--网格袋布局管理器</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/151619" style="color:red;">http://stormnic.javaeye.com/blog/151619</a>&nbsp;
          发表时间: 2007年12月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          网格袋布局管理器中的约束条件constrains中有如下字段需要设置：<br /><br />（1）constrains.gridx和constrains.gridy<br /><br />这两个字段仅用于指定组件的起始网格坐标。<br /><br />（2）constrains.gridwidth和constrains.gridheight<br /><br />这两个字段用于指定组件所占网格的列数和行数。<br /><br />（3）constrains.fill<br /><br />组件在网格中的填充方式。GridBagConstrains中定义了一些常量用于确定组件在网格中的填充方式：<br /><br />GridBagConstrains.HORIZONTAL //水平方向上尽量扩张<br /><br />GridBagConstrains.VERTICAL //垂直方向上尽量扩张<br /><br />GridBagConstrains.BOTH //水平、垂直方向上均扩展<br /><br />GridBagConstrains.NONE //水平、垂直方向上均不扩张<br /><br />（4）constrains.insets<br /><br />给字段是一个insets类型的对象。该对象用作所添加组件的外部填塞，其大小由该对象的left、top、right<br /><br />及button字段决定。<br /><br />（5）constrains.ipax和constrains.ipay<br /><br />与constrains.insets向对应，这两个字段称为组件的内部填塞。这两个值被加到组件的最小宽度和最小高度上，从而保证组件不会收缩到它的最小尺寸之下。<br /><br />（6）constrains.anchor<br /><br />当组件比所在网格小的时候，可以使用该字段来设定组件在网格内部的停靠位置。GridBagContrains包含了如下的常量来表示组件的停靠位置：<br /><br />GridBagConstrains.CENTER<br /><br />GridBagConstrains.NORTH<br /><br />GridBagConstrains.NORTHEAST<br /><br />GridBagConstrains.EAST<br /><br />GridBagConstrains.SOUTHEAST......<br /><br />（7）constrains.weightx和constrains.weighty<br /><br />这两个字段是组建在水平方向和垂直放的扩张权重。如果不希望在某个方向上扩张组件，则将该方向上的权重重置为0.<br /><br />需要注意的是：权重字段的取值需要和fill字段相适应。
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/151619#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 28 Dec 2007 21:46:37 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/151619</link>
        <guid>http://stormnic.javaeye.com/blog/151619</guid>
      </item>
      <item>
        <title>常用的GUI组件--标签</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/151618" style="color:red;">http://stormnic.javaeye.com/blog/151618</a>&nbsp;
          发表时间: 2007年12月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          标签（label）通常是一个用来标识另外一个组件的含义。可以在标签上显示文字、图像和文字图像的组合。<br /><br />    创建一个只显示文字的标签有两种方法：<br /><br />（1）直接在生成标签时定义名字 JLabel label_name=new JLabel（“标签内容”）；<br /><br />（2）也可以在标签对象生成后，调用setText()方法来在标签上显示内容。<br /><br />如果希望在标签中使用图像，则必须先创建一个图像标签对象，然后将该对象作为标签的构建器参数：<br /><br />例如：<br /><br />     ImageIcon inon=new ImageIcon("image/greenflag20.gif");<br /><br />     JLabel labImage=new Jlabel(icon);<br /><br />     如皋要在标签中同时使用文本和图像，可以使用JLabel提供的一个构建起JLabel（String text，Icon icon，int horizontalAlignment）。在该构建器中第一参数是欲显示的文本，第二个参数是欲显示的图像；第三个参数为水平方向上的对齐方式。<br /><br />     如果标签中同时显示文本和图像，在默认的情况下，文字将显示在图像的右侧。如果希望文字显示在图像的左侧，可以使用如下的方法：<br /><br />     JLabel labelTextImage=new JLabel("文本图像标签",icon,SwingConstants.LEFT);
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/151618#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 28 Dec 2007 21:45:48 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/151618</link>
        <guid>http://stormnic.javaeye.com/blog/151618</guid>
      </item>
      <item>
        <title>常用的GUI组件--文本输入组件</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/151616" style="color:red;">http://stormnic.javaeye.com/blog/151616</a>&nbsp;
          发表时间: 2007年12月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Java提供了一系列的组件用于接收用户输入，并且用户可以对输入的文本进行编辑，例如<br /><br />文本框（JTextField）、密码框（JPasswordField)、文本域（JTextArea)以及<br /><br />可编辑的（JComboBox）等。<br /><br />       对于int、float和double在其封装的类中都有对应parseInt()、parseFloat（）和parseDouble()<br /><br />方法用于将参数字符串转换成数值类型。当字符串无法转换成数值型时就抛出异常。<br /><br />       一些实用的方法：<br /><br />（1）setEditable(boolean aValue);使得文本框不能编辑；<br /><br />（2）默认情况下，在文本框中按下Enter键，程序不会有相应。实际上，当用户按下Enter键后，该文本框就会产生一个动作时间（ActionEvent），可以给文本框注册事件侦听器来响应该事件。<br /><br />                ××××.requestFocus（）;//获取焦点<br /><br />                ××××.selectAll（）;//选中全部内容<br /><br />      密码框可以通过setEchoChar（char c）方法设定回显字符。需要注意的是，取得文本框对象的文本时，使用方法getText（），该方法返回的是一个String类型的对象。而要取得密码框中的文本，使用方法getPassword（），该方法返回的是一个char数组。<br /><br />      给文本域加上滚动条只需要将文本域作为参数创建一个滚动窗格（JScrollPane）即可：<br /><br />JFrame f=new JFrame（）;<br /><br />JTextArea t =new JTextArea（）;<br /><br />JScrollPane scroll=new JScrollPane(t);<br /><br />f.getContentPane().add(scroll);<br /><br />     组合框有两种编辑模式：第一种为不可编辑模式。第二种为可编辑模，一方面他允许用户从选项列表中选择，另一方面还可以直接在组合框中输入并进行编辑。
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/151616#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 28 Dec 2007 21:45:14 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/151616</link>
        <guid>http://stormnic.javaeye.com/blog/151616</guid>
      </item>
      <item>
        <title>java GUI编程--setDefaultCloseOperation</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/151615" style="color:red;">http://stormnic.javaeye.com/blog/151615</a>&nbsp;
          发表时间: 2007年12月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          一个java GUI程序与普通的控制台程序不同的是：该应用程序在main方法退出后并没有终止。因为其中的显示函数show（）方法启动了另外一个GUI线程，使得该应用程序仍然处于活动状态。<br /><br />       单击×框架虽然不见了，但是程序仍然没有退出。这是因为在默认的情况下，关闭框架只是将框架设置为不可见，即框架仍然是“活”的。使用setDefaultCloseOperation()方法可以改变框架关闭时的默认动作。
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/151615#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 28 Dec 2007 21:44:04 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/151615</link>
        <guid>http://stormnic.javaeye.com/blog/151615</guid>
      </item>
      <item>
        <title>JPanel</title>
        <author>stormnic</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stormnic.javaeye.com">stormnic</a>&nbsp;
          链接：<a href="http://stormnic.javaeye.com/blog/151613" style="color:red;">http://stormnic.javaeye.com/blog/151613</a>&nbsp;
          发表时间: 2007年12月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          JPanel是一个容器，可以向其中添加其他的GUI组件（如按钮JButton组件）；但是JPanel不是顶层容器，因此在屏幕上显示JPanel，必须将它添加到一个顶层容器（如JFrame）中。<br /><br />     Swing中的组件是lightweight的，并且每一个组件都可以是容器。可以向任何一个容器中添加其他的组件。但是顶层容器类型的组件不能添加到任何其他的组件。此外一个Swing组件要想在屏幕上显示出来，最终都必须由一个顶层容器来容纳。<br /><br />      构建复杂的用户界面时，常常使用多个JPanel来组织各种的GUI组件，然后将这些面板添加到内容窗格（contentPane）中。为此程序设计人员呢，一般只需要考虑两中容器的布局管理器。面板的默认布局管理器是流布局管理器（FlowLayout),内容窗格的布局管理器是边框布局管理器（BorderLayout）。如果面板和内容窗格的布局管理器无法满足需求，则可以通过setLayout（a NewLayout）方法来改变其布局管理器，方法setLayout（）的参数是一个布局管理器对象。
          <br/><br/>
          <span style="color:red;">
            <a href="http://stormnic.javaeye.com/blog/151613#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 28 Dec 2007 21:42:32 +0800</pubDate>
        <link>http://stormnic.javaeye.com/blog/151613</link>
        <guid>http://stormnic.javaeye.com/blog/151613</guid>
      </item>
  </channel>
</rss>