`
xiaozhonghua
  • 浏览: 253667 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多

吵吵闹闹的世界杯结束了,西班牙人终于如愿以偿。回顾整个杯赛,花里胡哨的队伍都未能走到最后,反而强调整体性和纪律性的队伍占据了四强。足球是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
分享到:
评论
26 楼 gml520 2010-07-13  
太感谢楼主的无私贡献! 现在可以好好的研究一下楼主的框架了。
25 楼 ttion 2010-07-13  
每次看楼主的文章都无比的激动。

谢谢了。
24 楼 xhyao1229 2010-07-13  
楼主的语言幽默诙谐,可以跟蔡学庸先生有的一拼。

是否考虑业出个XXX夜未眠(就Swing夜未眠好了^_^)
23 楼 songlixiao 2010-07-13  
xiaozhonghua 写道
woshicaiqiang 写道
swing的程序一般如何架构啊,直接用swing,连接 一个 ssh2开发的javaweb项目啊,通过httpclient来通信,这样做可不可行?(swing和web来回传xml字符串或者序列化的对象,这样能成功,但是好像没发现有人这么做,但是我上一个公司的确是这么干的),请指教啊,能告诉我你们做swing项目的时候怎么架构的嘛?分几层?是swing直接连数据库那种嘛?

这样做完全可行。其实有很多Swing的项目都是这样做的。通过HTTP和Java序列化并进行压缩后传输,完全可以,何罪之有呢?既可以走80端口防止防火墙的问题,又可以利用HTTP的轻量、高效,是很聪明的做法。

Swing直接连数据库的就有点太原始了,如果非分布式的桌面小程序还是可以的。大多分布式的企业应用还是要有个App Server来做中间层,而不是直接连DB。


企业应用中可以考虑客户端与中间层使用EJB实现,用友公司的NC产品就是这么搞的. 客户端也是swing的,只是界面没楼主的这么帅,它的中间层就是EJB的.现在EJB3使用很方便.
当然轻量的web应用EJB就免了吧.
22 楼 javazeke 2010-07-13  
牛人,,膜拜一下!!!
21 楼 greatghoul 2010-07-13  
Shell好经典呀,Swing也可以这么棒。
20 楼 iceman1952 2010-07-13  
你的文采真是大大滴好啊
19 楼 xiaoyiz 2010-07-13  
开发swig推荐 WindowBuilder 呵呵 这个eclipse插件还不错哦 style可以自定义 始终感觉swing没vs中winform开发来得快。。这点超不爽
18 楼 雨夜之家 2010-07-12  
芳华

散代码不就是来换这个的么?前面的人都那么小气不给你,我给你了。

new 芳华();
17 楼 xiaozhonghua 2010-07-12  
woshicaiqiang 写道
swing的程序一般如何架构啊,直接用swing,连接 一个 ssh2开发的javaweb项目啊,通过httpclient来通信,这样做可不可行?(swing和web来回传xml字符串或者序列化的对象,这样能成功,但是好像没发现有人这么做,但是我上一个公司的确是这么干的),请指教啊,能告诉我你们做swing项目的时候怎么架构的嘛?分几层?是swing直接连数据库那种嘛?

这样做完全可行。其实有很多Swing的项目都是这样做的。通过HTTP和Java序列化并进行压缩后传输,完全可以,何罪之有呢?既可以走80端口防止防火墙的问题,又可以利用HTTP的轻量、高效,是很聪明的做法。

Swing直接连数据库的就有点太原始了,如果非分布式的桌面小程序还是可以的。大多分布式的企业应用还是要有个App Server来做中间层,而不是直接连DB。
16 楼 woshicaiqiang 2010-07-12  
swing的程序一般如何架构啊,直接用swing,连接 一个 ssh2开发的javaweb项目啊,通过httpclient来通信,这样做可不可行?(swing和web来回传xml字符串或者序列化的对象,这样能成功,但是好像没发现有人这么做,但是我上一个公司的确是这么干的),请指教啊,能告诉我你们做swing项目的时候怎么架构的嘛?分几层?是swing直接连数据库那种嘛?
15 楼 andy54321 2010-07-12  
楼主研究上深度了,看来有集结成册的可能了,以后出书也很可能
14 楼 viperasi 2010-07-12  
xiaozhonghua 写道
viperasi 写道
之前给LZ发了消息,不知道LZ是否有看到,这里再问一次吧。
如果用swing实现苹果电脑的模式窗口效果,有什么思路吗?

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


有回复就非常感谢了.等待你的下一刀!
13 楼 houfeng0923 2010-07-12  
楼主好强大,膜拜ing
12 楼 xiaozhonghua 2010-07-12  
viperasi 写道
之前给LZ发了消息,不知道LZ是否有看到,这里再问一次吧。
如果用swing实现苹果电脑的模式窗口效果,有什么思路吗?

哦那个消息我看到了,这个还真没什么思路,以前也没玩过MAC。公司有人有MAC,我想找机会看看再说,不好意思现在可能无法给出具体思路哈
11 楼 javagui 2010-07-12  
LZ是想出版Swing的专注吗?
10 楼 cfqlove 2010-07-12  
请问一下楼主,运行代码是否还需要其它的Jar包
9 楼 cfqlove 2010-07-12  
感谢分享,马上研究一下
8 楼 mooninday 2010-07-12  
下了源码,准备研究下。。。
7 楼 pch272215690 2010-07-12  
是时候出书了。。。。

相关推荐

    SWING大刀系列源码

    主题:Swing是一把刀 ...Swing第四刀:代码尽散换芳华 http://joshuaxiao.iteye.com/blog/714669 Swing第五刀:走马观花看世博 http://joshuaxiao.iteye.com/blog/726318 Swing第六刀:老婆不能换,窗户框可以

    Swing_大刀系列.pdf

    Swing大刀系列: 1.1 Swing是一把刀 1.2 Swing第二刀:枝间新绿一重重 1.3 Swing第三刀:做套ERP,要配得...1.4 Swing第四刀:代码尽散换芳华 1.5 Swing第五刀:走马观花看世博 1.6 Swing第六刀:老婆不能换,窗户框可以

    Swing第三刀:做套ERP,要配得上我的登录界面

    Swing第三刀:做套ERP,要配得上我的登录界面

    Swing第四刀(转)

    Swing第*刀(转) 个人觉得不错,发来大家学习,不要分

    Swing是把刀学习代码

    这个“Swing是把刀学习代码”项目显然旨在帮助开发者了解如何利用Swing来创建功能丰富的、具有吸引力的桌面应用。 Swing提供了大量的组件,如按钮、文本框、菜单等,这些组件可以被用来构建用户界面。它的优势在于...

    swing开发的源代码

    10. ** Swing Look and Feel (L&F)**:Swing允许开发者更改应用的外观和感觉,通过LookAndFeel类可以切换系统默认的L&F或安装第三方的L&F库,以达到不同的视觉效果。 Swing源代码的学习可以帮助开发者深入理解其...

    java-swing版代码生成器

    Java Swing版代码生成器是一个基于Java Swing图形用户界面(GUI)的工具,它旨在帮助开发者自动化创建和管理Java代码。Swing是Java平台上的一个组件库,用于构建桌面应用程序,提供了丰富的用户界面元素,如按钮、...

    深入浅出JAVA Swing程序设计 书+代码

    本资源"深入浅出JAVA Swing程序设计 书+代码"旨在帮助开发者深入理解Swing,并通过实例代码进行实践,提升Java桌面应用的开发能力。 Swing提供了一套完全由Java实现的组件,这些组件不仅功能强大,而且在跨平台兼容...

    java swing是一把刀

    文件名列表中的"swing第一刀.doc、swing第三刀.doc、swing第二刀.doc、swing第四刀.doc"可能包含了一系列教程或示例,指导读者如何利用Swing的特性。这些文档可能涵盖了从基本组件的使用到高级主题,如布局管理、...

    java swing管理系统源码 程序 代码 图形界面(11套).zip

    Java Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分,用于构建桌面应用程序。本压缩包包含了11套完整的Java Swing管理系统源码,这些源码对于学习和理解Java GUI...

    基于Swing应用程序设计:一个简易的文本编辑框

    As a professional in the IT field, I'll be detailing the knowledge points from the given title, description, and tags, specifically focusing on creating a simple text editor using Swing in Java. ...

    Swing大刀系列

    ### Swing大刀系列知识点概述 #### 1. Swing的地位与争议 - **Swing的现状**: Swing作为一种桌面应用开发框架,在Web技术和RIA(富互联网应用)兴起后受到了冷落。很多人认为Swing已经过时或者即将被淘汰。 - **...

    java小游戏 (源码)swing五子棋源代码

    java小游戏 (源码)swing五子棋源代码java小游戏 (源码)swing五子棋源代码java小游戏 (源码)swing五子棋源代码java小游戏 (源码)swing五子棋源代码java小游戏 (源码)swing五子棋源代码java小游戏 (源码)swing五子棋源...

    精通java-swing开发.doc

    例如,`JFrame`、`JDialog`、`JWindow`和`JApplet`这四个组件属于重量级组件(Heavyweight Components),它们是基于AWT(Abstract Window Toolkit)的组件,需要用到本地代码来绘制,因为它们需要操作系统级别的...

    Java Swing 组件全演示源代码

    Java Swing 组件全演示源代码-Java Swing components entire demo source code

    Swing第二刀(转)

    Swing第*刀(转) 觉得很好,发给大家看看,不需要分

    javaswing酒店管理系统源代码+数据库模型

    javaswing酒店管理系统源代码+数据库模型 酒店管理系统的需求包括开台点菜功能、智能化获取菜品功能、自动结账功能、营业额报表功能等。依据餐饮行业的特点,本系统实现以下目标: 操作简单方便、界面简洁大方。 ...

    swing版代码生成器1.2

    【Swing版代码生成器1.2】是一款基于Java Swing技术开发的代码自动化工具,它旨在简化软件开发过程,提高开发效率。Swing是Java提供的一种用于构建图形用户界面(GUI)的库,其组件丰富,灵活性高,使得开发者能够...

    Java Swing大神必经之路

    第4篇 Java Swing大神必经之路4:JavaSwing-ItemListener接口 本篇文章详细介绍了 ItemListener 接口,包括其方法和使用场景,幫助讀者更好地理解 ItemListener 的使用。 第5篇 Java Swing大神必经之路5:JavaSwing...

    java swing laffy风格皮肤源代码

    总结一下,本资源包提供的 "java swing laffy风格皮肤源代码" 是一个Java Swing自定义Look and Feel的实例,它可以改变Swing应用的视觉表现,为用户提供一个独特的、幽默的界面体验。通过学习和使用Laffy L&F,...

Global site tag (gtag.js) - Google Analytics