论坛首页 Java企业应用论坛

Swing第四刀:代码尽散换芳华

浏览 26604 次
该帖已经被评为精华帖
作者 正文
   发表时间:2010-07-12   最后修改:2010-09-04

吵吵闹闹的世界杯结束了,西班牙人终于如愿以偿。回顾整个杯赛,花里胡哨的队伍都未能走到最后,反而强调整体性和纪律性的队伍占据了四强。足球是11个人的运动,这一简单的足球运动真理看来还没有被所有人深刻的认识到。

 

为什么西班牙能夺冠?“我们很淡定,敌人比我们还淡定;我们淡定是因为我们不怕死,敌人淡定是因为他们不怕我们死”。赛后荷兰主帅这样解释失败原因。不过罗本两次单刀两次裸奔,又能怨谁呢?

 

由于项目繁忙又加上世界杯看球,《Swing大刀》系列中提到的项目源码一拖再拖,如今终于整理完毕给大伙送上。其实中间很多代码都是在边看球边写的,有点心不在焉,不过仅供参考,献丑一下也无妨。

 

源码中的类不多,分为两个包:一个是free.*,一个是free.test.*。其中free.*这个包是整个小框架的核心代码和类,其image子目录是其中用到的各种资源图片。free.test.*则是对框架的使用示例,包括一些相关图片资源。也就是说,free.*可以认为是“产品级别”的,而free.test.*则是“项目级别”的,是框架使用的一个例子。整个框架的初衷和解释在以前博文中有所阐述,此处不再重复。

 

这些代码从公司的一个预研项目中抽出。根据中华人民共和国国务院2000年6月25日颁布的《鼓励软件产业和集成电路产业发展的若干政策》(18号文件)及2002年7月24日发布的《振兴软件产业行动纲要(2002年至2005年)》(47号文件)规定的由国家扶持的软件产业风险投资公司和投资基金(至今尚未组建)的精神,以及“共享、共有、共富、共赢”的四项基本原则、“软件还是开源好”的基本国策、“今天,你免费了没?”的行规,代码的package修改为了free.*;主要的类也一律Free***来命名,以此充分体现响应国家号召、遵守行业政策的精神。例如,FreeToolBar就是工具条,FreeProgressBar就是进度条,等等。大家可自行研究。

 

free包下的Shell.java是整个小框架的设计初衷:做一个现成的界面风格和布局,用XML来配置其内容(例如菜单、工具条、模块栏、功能列表等等,具体XML见free目录下的几个xml示例文件)。所以可以直接运行这个类(有main函数),可以得到《Swing第一刀》中的示例。此外,运行FreeLoginUI.java即可得到《Swing第三刀》中的登录界面,等等。

 

代码很简单,也很干净,由于从公司项目抽出,很多注释都被我去掉,以避免不必要的麻烦。相信以大家的聪明才智加上俺的规范命名,不会造成什么阅读困难。不过关于代码的使用还有以下注意事项,请大家注意:

 

 

  1. 代码仅供参考和相互学习。现在软件行业(甚至各行各业)抄袭成风、愈演愈烈,以至于某个公司每次说“我们的**数据库**操作系统是完全国产、完全自主创新、完全的自主知识产权”,我们程序员就都会心的笑了。但是我还是不建议把这套代码直接用在自己的项目上,尤其原封不动的照搬,总不是件好事。以后俺家的ERP和你家的ERP去同一个客户那去竞标,show出来一看:阿娇和阿萨,撞衫而死,岂不尴尬!非要用,怎么也得修改一下图片资源、简单的颜色、字体风格吧,相似度降低到大S和小S就行了,聪明人更会弄的不露痕迹,所谓“去其糟粕、取其精华”嘛。相信大家会处理好。
  2. 关于JGoodies和TWaver。代码中涉及到一些JGoodies和TWaver的使用和相关代码,以前解释过原因,这里再重申一下。JGoodies是一个免费的LnF,TWaver是一个商业的Swing组件库(试用版本是可以免费用的有个水印而已)。两个东东在这里都不是必须使用的。他们的存在仅仅是因为我们公司项目的具体需要,我也就没有花很多时间去除他们的使用代码。在《Swing第二小刀刀:星星之火可以燎原》一文里,xujunJ2EE同学已经成功的去除了这些第三方类库的相关代码并提供了源代码,相信对大家会有所帮助。还是那句话:哥散的不是代码,是思想;哥你看的也不是源码,是火花。哈!
  3. 代码的更新:这个框架会持续改进,代码也会持续更新。不过由于这是一个公司内部项目,所以本人不能保证以后还能持续更新、改进和发布这批代码;不过相关的技术思路都会在后续的文章中共享,相信大家也完全可以自己来实现代码的改进。
  4. 欢迎大家一起学习和讨论,共同进步,无论是玩Java Swing的,还是Web的,还是.NET的,还是Flex的。谩骂和攻击总不是让人很舒服的事,尤其在自己“未作恶”的情况下,就尤显得委屈。况且,谩骂绝不是战斗,反而有点懦弱和胆怯的表现,于我们的学习和进步毫无益处。本人尊重所有人、所有技术、所有流派、所有思想,并一向本着“不做作、不忽悠”的做人原则,也希望获得大家的支持鼓励和批评建议。
有人说你这代码散了岂不可惜?确实没什么可惜的。岂不说这里本就没什么高深的技术奥秘,就算有,如能让大家更多的了解Java和Swing以及一些UI设计和编程技巧,改变一点对Java和Swing的偏见和看法,或者能换回更多的共同进步之“满地芳华”,那岂不更是人生之更大乐事么?

哎哎,说你那,在那别罗利巴索唠唠叨叨半天了,散个代码,你哪那么多废话啊?!
欧克,欧克(注:火星语,OK之意)。代码在下方。goodies.jar和twaver.jar请在我博客的前面文章中下载,不再重复提供。有任何疑问请在论坛回复留言。

祝大伙编程愉快!

 

  • src.zip (431.8 KB)
  • 下载次数: 4613
   发表时间:2010-07-12  
Good,fine,great! 研究一下。
0 请登录后投票
   发表时间:2010-07-12  
哦耶、已经拿到了源码开始研究

再次感谢xiaozhonghua大牛提供的宝贵学习资料

0 请登录后投票
   发表时间:2010-07-12  
之前给LZ发了消息,不知道LZ是否有看到,这里再问一次吧。
如果用swing实现苹果电脑的模式窗口效果,有什么思路吗?
0 请登录后投票
   发表时间:2010-07-12  
下了源码,准备研究下。。。
0 请登录后投票
   发表时间:2010-07-12  
请问一下楼主,运行代码是否还需要其它的Jar包
0 请登录后投票
   发表时间:2010-07-12  
LZ是想出版Swing的专注吗?
0 请登录后投票
   发表时间:2010-07-12  
viperasi 写道
之前给LZ发了消息,不知道LZ是否有看到,这里再问一次吧。
如果用swing实现苹果电脑的模式窗口效果,有什么思路吗?

哦那个消息我看到了,这个还真没什么思路,以前也没玩过MAC。公司有人有MAC,我想找机会看看再说,不好意思现在可能无法给出具体思路哈
0 请登录后投票
   发表时间:2010-07-12  
xiaozhonghua 写道
viperasi 写道
之前给LZ发了消息,不知道LZ是否有看到,这里再问一次吧。
如果用swing实现苹果电脑的模式窗口效果,有什么思路吗?

哦那个消息我看到了,这个还真没什么思路,以前也没玩过MAC。公司有人有MAC,我想找机会看看再说,不好意思现在可能无法给出具体思路哈


有回复就非常感谢了.等待你的下一刀!
0 请登录后投票
   发表时间:2010-07-12  
楼主研究上深度了,看来有集结成册的可能了,以后出书也很可能
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics