`
BarryWei
  • 浏览: 65493 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

谁说Swing不适合做End Users Desktop应用来着?

    博客分类:
  • Java
阅读更多

(楼主添加于:2010-09-14

     没有想到过这个帖子会带来这么多的讨论、异议、无休止的争吵。还有更多“喜欢看打仗”的喷友们。

     这也让我见识到了一些事情,不记得是谁说过:Wen Ge 过去那么多年,可现在人们的思想比那个时候还可怕。)

 

很多人批评Swing做的东西很丑陋,并且需要需要jre才能运行,因此Swing不适合做桌面应用了!

 

在人们都在疯狂的崇拜web,除了生孩子之外所有的事情都放到了web上的时候,有这么一部分人,他们依旧对桌面应用情有独钟。我即使这么一个人。

 

Swing怎么玩?一个Frame,几个常用的组件,几个皮肤?不,这远远不是Swing的全部。如果你搞通了什么是MVC,你就会明白Swing的设计其实,是最经典的也是非常聪明的设计。当然,这里就不需要罗嗦这些了。有兴趣的童鞋们,除了看一些Swing布局和组件相关的书籍之外,强烈推荐<Swing Hacks>。在这里可以找到它相关的内容:http://oreilly.com/catalog/9780596009076/。

 

除此之外,今天来这里当然是想说说自己的东东,也算是一个广告吧。

 

快三个月之前老板给了一个任务:写文档并与其他同事分享。考虑过在公司内部搭建文档服务器,但是被抛弃了。不是有Google Docs可以使用吗?而且还支持在线编辑文档,能够与其他朋友分享维护,而且Google Docs还提供了版本控制。于是乎,便跑去Google Docs了。但是每次需要上传或者下载,或者分享文档的时候都需要打开浏览器,灰常的不方便。因此就满世界去找Google Docs的桌面版(也有一开始讲的那个原因在里面)。黄天不负苦心人,确实找到了一个很好用的软件,叫做Memeo Connect。但是那玩意儿竟然需要购买才可以使用。看看界面,也没什么了不起的。既然我用不起你的,我自己写一个还不行么!于是乎,经过两个月多一点的时间,就有了我这个100% Swing手写代码软件:iGoSyncDocs .(当当当当,善良登场。)

 

在Sourceforge上的位置:http://igosyncdocs.sourceforge.net/


在Google Code上的位置:http://code.google.com/p/igosyncdocs/

 

有兴趣的童鞋可以去看看,我把它给开源了,并写了一封email给Memeo Connect告诉他们,我的免费请使用我的。哈哈哈。

 

谈谈这个过程当中的一些收获。

 

Swing很完美。毫无置疑的是,在Swing中写代码你完全可以按照MVC的原则去看待所有的东西。组件本身、组件中的数据、数据的渲染,这三个部分被完完整整的分离了。数据来自于Model而需要显示不同的效果就去找相应的Renderer,实在是太方便啦。在这个过程当中才能体会到MVC的分离原则,是多么的伟大。

 

在界面方面,选择了大名鼎鼎的QuaquaLookAndFeel,因为我一直觉得防Mac的那个皮肤,确实让我看着很舒服。后来软件写成了之后有一个日本的网友在Mac上跑,抓了几张图出来给我看到,那玩意儿真的不错,嘿。

 

数据完全来自于Google Docs Service。里面使用了Google Document List API的一些jar,因为自己再去底层封装那些atom和feed实在太麻烦了,而且里面还要牵扯到共享文档,就是ACL的那些破东西,很是烦躁。因为一开始的时候就找到了Google已经封装好的东西直接拿来用,感觉功能很强大。但是,文档就差的要死。那注释写的估计写完了自己也没看懂是什么意思。哎。

 

得到了GoogleDocsService的数据之后,在本地显示。并且提供了上传、下载各种格式、和好友分享、并且直接点击文档即可打开浏览器访问相应的文档内容等功能。基本上,这些功能都是模仿那个收费的软件。

 

但也有几个头疼的地方:

1、写出来的代码完全硬代码,可维护性太差。如果需要更换界面的布局或者界面内容,需要重写一个类了。如果能够换成android那种方式多好啊。页面布局使用xml文件,需要修改的时候,只需要修改xml文件内容就好了。最近正在考虑这个事情,去下android的源代码看看这部分内容,自己写一个Swing的框架出来。有兴趣的童鞋可以一起来玩。

2、如何能够真正做到End User程序。也就是说,如果用户电脑中没有安装jre你也需要运行。如果要实现这功能只能把程序和jre一起打包才可以。程序本身只有4M左右,一个jre有80M,总不至于这样做吧?因此,就想到了给jre减肥。这几天正在想办法使用GreenJVM打包。GreenJVM是一个国产的很牛X的东东,才开始玩过段时间看看如何吧。除此之外,如果大家还有其他开源的或者免费的能够实现类似功能的东西,多多推荐。

 

最后,来一张特写给它:

 

iGoSyncDocs

 

Swing其实是可以很美的。哈哈哈哈哈。

 

 

分享到:
评论
214 楼 nj_dobetter 2012-06-28  
用XML编写Swing,之前写过一个jar library,并且实现了一个编辑xml和查看UI结果的tool, tool中也可以添加第三方ui jar。
这个方案已经用到了一个实际的项目中去,目前还没有发现什么问题。
213 楼 dsjt 2011-04-07  
<div class="quote_title">BarryWei 写道</div>
<div class="quote_div">
<p><span style="color: #0000ff;">
<p>我把它给开源了,并写了一封email给Memeo Connect告诉他们,我的免费请使用我的。哈哈哈。</p>
<p>谈谈这个过程当中的一些收获</p>
</span></p>
<p> </p>
<p> </p>
</div>
<p> </p>
<p>换个话题,谈一下这封邮件的收获吧?</p>
<p> </p>
212 楼 auldblade 2011-04-07  
花了20多分钟终于看完了。

我总结下思路哈,错了就当全没看到。

1. 讨论的都是表象,真正的原因是我们的版权意识太弱。从小就是用盗版的windows造成自己的思维被MS定式了,符合ms的就是好的,不符合的就是不好的。先别忙着拍,自己拍拍自己的良心问问自己“有木有”
2. 更深层次的原因是人心的原因,有些人不知道为什么看到什么都喷,看到什么都拍。也没办法,可能是现实生活太压抑了,只能在虚拟的网络上不负责任的刷存在感。

更深层次的就不分析了

211 楼 joe9i0 2011-03-09  
插,22页楞是一页一页全部看完了,真TM闲得蛋疼.

我看争论的人更TM闲的蛋疼!
210 楼 letsgo2010 2010-12-21  
lxl214686623 写道
这贴子我楞是看了一个多小时。。评论很精彩。。



评论确实有意思,但是我们公司的现实就是UI开发优先选用MS的VS而不是JAVA的SWING,主要到不是因为员工的java水平问题或者是java的图形界面就一定不好看什么的,而是做一个商业软件所需要考虑的成本和效率问题。

或许有很多喜欢swing的人要反驳我说的话,因为java的IDE工具确实也有很多比较方便的,而且我也喜欢JAVA,上次做给我女朋友的生日礼物就是用SWING做的,然后打包JRE做的安装包,很酷。

但是现实中要做到同等界面展现效果的话,相对而言,还是微软的IDE工具要快一些,相反的,WEB项目,用asp.net在我们公司就不多 了,而是jsp和php比较的多,我说的这些都是一般情况下,特殊情况,比如跨平台,那另当别论。
209 楼 lxl214686623 2010-09-26  
这贴子我楞是看了一个多小时。。评论很精彩。。
208 楼 BarryWei 2010-09-17  
numen_wlm 写道
又试用了下,Bug太多,近乎于半成品,楼主加油再改进下呗。
有时间了也打算做一个。


现在确实bug蛮多,因为忙着工作的时间,搞这个时间不是太多,所以代码也写的比较仓促。
正在慢慢不断改进当中,谢谢关注。
207 楼 BarryWei 2010-09-17  
永远的永恒 写道
登录名与密码????



你自己的Google帐号和密码就可以。。。
206 楼 永远的永恒 2010-09-17  
登录名与密码????
205 楼 numen_wlm 2010-09-17  
又试用了下,Bug太多,近乎于半成品,楼主加油再改进下呗。
有时间了也打算做一个。
204 楼 numen_wlm 2010-09-17  
试用了下,Bug挺多的说。。。
203 楼 soni 2010-09-15  
支持楼主的精神。交流一下经验吧。
另外,就不要讨论界面了,这里终究不是ui设计区。
202 楼 BarryWei 2010-09-15  
另外如果还有争论是不是跨平台以及Swing如何如何的喷友们,你们可以停止了。
不要做这样无畏的批评和发疯一般的攻击。不管对于谁,都是不好的。谢谢合作。
201 楼 fxbird 2010-09-13  
journeydj 写道
我始终没搞明白为什么一定要跨平台。。。


网管软件哪有不跨平台的,只是你没遇到过这样的应用而已.华为的N2000, EMC的Smart都是用java做的.
200 楼 journeydj 2010-09-13  
我始终没搞明白为什么一定要跨平台。。。
199 楼 geminiyellow 2010-09-10  
wxq594808632 写道
我擦.我2b.我回帖了...没想到  geminiyellow 也做过swing..

咋,哥最多就做GUI了。偶尔驱动一下。
198 楼 精神病院长 2010-09-09  
lz
下载后运行用户名和密码多少?
197 楼 精神病院长 2010-09-09  
终于把左右恢复都看完了,我那个累呀鄙视有些人一上来就批人家这个不好那个不好也没自己放点东西上来.

下载了先先功能。
196 楼 zouyazhou 2010-09-09  
<p><img src="/images/smiles/icon_biggrin.gif" alt="">一下子把所有的回帖都看完了!~用户需求和体验是最主要的!·</p>
195 楼 wxq594808632 2010-09-09  
我擦.我2b.我回帖了...没想到  geminiyellow 也做过swing..

相关推荐

    swing-desktop-starter:示例Swing桌面应用程序

    swing-desktop-starter-1.0.0 Swing桌面应用程序示例 描述 一个示例的Swing桌面应用程序/ MDI(多文档界面)可帮助开发人员快速启动新项目...该应用程序已预先配置了Maven,Log4j和resources文件夹下的自动加载属性...

    Swing全部组建应用实例

    Swing全部组建应用实例 各种事件、布局、组建应用的实例

    JavaSwing常用组件的应用

    Java Swing常用组件的应用,更快Swing入门

    swing 应用程序框架

    sun的一个swing框架,内容很新颖,思路也不错

    Swing应用程序的加载动画示例

    该应用是演示怎样使用多线程来显示一个Swing应用的加载动画。主要是使用JProgressBar和Timer来实现。目的是让比较复杂的Swing应用启动时解决延迟的状态,以提供友好的使用感。 阅读对象:使用Swing开发应用的学员。

    Swing组件应用实例

    对JAVA中Swing组件有一个很好的讲解,并通过实际的例子给读者一个清晰的认识和掌握!

    swing计算器,swing计算器 swing计算器

    swing计算器 swing计算器swing计算器 swing计算器swing计算器 swing计算器swing计算器 swing计算器swing计算器 swing计算器 简易计算器

    swing-layout-1.0.3

    swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3...

    swing 应用框架 1.3 英文版 API

    swing 应用框架 1.3 英文版 API

    一些Swing应用实例Java源码包

    包含选项框、列表框、仿Windows菜单、拖动条、表格、树型菜单、滑动门等等很多的Swing示例,你下载下来就知道了!

    swing教程 swing教程

    swing 教程swing 教程swing 教程swing 教程swing 教程swing 教程swing 教程swing 教程swing 教程

    j2ee的应用-swing组件介绍

    主要讲解swing组建的基础知识,和使用swing组件和j2ee开发一些简单的游戏和简单的应用程序

    Swing的GridBagLayout布局应用详解(附Java源代码)

    本文通过代码示例的方式介绍了Swing的GridBagLayout布局样式的应用,不拘泥于JDK文档教条方式的陈述,图形效果图与文字相结合,讲解直观而浅显易懂,另外,示例代码中还包含了BorderLayout、FlowLayout等布局的应用...

    Java2图形设计卷_swing

     2.1 小应用程序与应用程序  2.1.1 小应用程序  2.1.2 JApplet类  2.1.3 应用程序  2.1.4 JFrame类  2.1.5 小应用程序/应用程序的组合  2.2 GJApp  2.3 混合使用Swing组件和AWT组件  2.3.1 层序  2.3.2 ...

    反射在Java Swing编程中的应用

    反射在Java Swing编程中的应用

    JIDE Desktop Application Framework(桌面应用框架) 开发员技术手册

    感觉上Swing就是要么不做,要是做的话,Swing的项目一定是大项目。不过问题就出在这。大项目,如果没有规律可循,实在有点让人不放心。 我们当然也注意到这个问题,所以才引进了这样一个桌面应用程序框架。 和网页...

    swing界面美化包

    java图形化界面开发也可以做到更改主题,非常方便的进行swing界面美化,只需要你在frame中添加几行代码即可实现可定制主题的功能

    Swing Hacks[电子书+书中源码]

    不过想要让Java、AWT和Swing达到最佳性能并不容易(也不方便),特别是在模拟交互式Web站点或像Windows XP和Mac OS X这样的操作系统外观时更是如此。\r\n 本书能帮助JAVA开发人员跳过Swing的基础节直接让桌面应用...

    RSyntaxTextArea, 用于 Java Swing 应用程序的语法高亮,代码折叠文本编辑器.zip

    RSyntaxTextArea, 用于 Java Swing 应用程序的语法高亮,代码折叠文本编辑器 RSyntaxTextArea是 Java Swing 应用程序的一个可以自定义的语法高亮文本组件。 开箱即用,它支持 40 + 编程语言。代码折叠。搜索和替换...

Global site tag (gtag.js) - Google Analytics