kukooBlog

look to the master, follow the master, walk with the master, see through the master, become the master.

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  213 随笔 :: 0 文章 :: 285 评论 :: 0 Trackbacks

Eclipse RCP平台真的是一个非常好的平台,但是在用RCP的过程中,一定有一个大问题: SWT的UI widgets。 了解Swing的人知道,Swing下面有相当多的widgets,而且Sun还赞助着一个SwingLab,为Swing开发更多的客户化的UI widgets。 但是SWT目前有这么一个问题,SWT的元件,不能直接继承来开发一个新的UI组件,Eclipse虽然提供了大量的widgets,但是却还不够丰富,或者使用上有局限性(比如table这个组件)。 所以我们面临的问题就是: 要么自己开发适合自己需求的widgets,要么在网上找。 而目前,还没有像Swing那样存在大量的custom widgets,这有点像``鸡"和``蛋"的问题。

昨天在EclipseZone里看到一篇文章,进而找到了这篇blog: Custom SWT widgets List,里面给出了一个提供SWT widgets的列表,相当有帮助,像KTable这样功能更强的table组件。 当然,Eclipse也注意到这点了,所以Eclipse有一个孵化项目: Nebula,开始关注custom SWT widgets,并在每一个组件成熟以后,加到SWT平台里面。

【相关链接】
Custom SWT widgets List
Eclipse Nebula 项目


Technorati : , ,

posted on 2006-09-01 17:23 kukooBlog 阅读(2777) 评论(17)  编辑  收藏 所属分类: EclipseJava

评论

# re: Custom SWT widgets ? 2006-09-22 11:22 david.z
你好,一直关注你的blog。
对你们的东西非常感兴趣,请和我联系。msn:zwangli@hotmail.com  回复  更多评论
  

# re: Custom SWT widgets ? 2006-10-24 22:11 ken[匿名]
eclipse插件站点:http://www.eclipsepowered.net/  回复  更多评论
  

# re: Custom SWT widgets ? 2007-01-03 16:03 hhh[匿名]
其实swing的目标就是建立一个独立的GUI系统(独立于OS),所以GUI的绘制都是自己实现(建立在java 2D上)。这样带来的好处就是可以抛开历史包袱,从头开始实现一个灵活,现代,面向对象,真正跨平台的 GUI框架。
    
 当初swing设计思想是卓越的,Swing有着无与伦比的扩展性和灵活性,它采用了很多现代的UI理论,如renderer/editor等。只是碍于实现性能。
 但随着swing实现的性能越来越高,硬件环境越来越好。swing的发展一定更好!
    
 要说sun对于swing的失败,不是swing设计思想和架构有问题。而是他们为swing实现的默认look & feel是糟糕的!
  回复  更多评论
  

# re: Custom SWT widgets ? 2007-01-03 16:05 hhh[匿名]
再次强调一下,
swing的优秀在于它的架构和思想!如果你不从这些角度审视一下swing的话,你当然很难发现它的美!因为swing的设计充满了OO的艺术!

在"Swing是MVC设计的典范"一文中有这样一段话:
仔细研究Swing中事件监听、Model-View分离、Renderer/Editor机制、可插拔的LookAndFeel等机制,简直就是一门艺术,充满了美感。而如果你非常痛恨这些设计并觉得他们怪异,很可能你是刚从VB或者Delphi转过来,这些快速开发工具帮助了你也“害”了你。
  回复  更多评论
  

# re: Custom SWT widgets ? 2007-01-03 16:08 hhh[匿名]
我欣赏优雅和一致的设计,一致性反应了设计者极高的抽象水平,优秀的概念表达.
  
  我们现在来看MFC和swing.
  MFC是如何表达GUI的,首先对于GUI元素没有一个共性抽象,使得无法进行任意的递归组合.
  MFC认为 GUI元素是原子的,GUI元素自身提供了设置它属性的API基本决定了这个GUI元素给外部定制它的能力.低灵活性!
  
  MFC认为GUI元素自身应该处理事件,并且使用消息映射来实现这一点.
  所以通常如果你要处理某个GUI元素的事件,你需要写一个继承这个GUI元素的类.
  但殊不知很多情况下事件处理者和GUI元素是分离的!
  
  MFC的MVC是实现是不一致的,他并没有将这一理念贯穿于整个框架.而只是单独搞了个doc/view.
  
  所以如果我以今天的思路来看MFC,我觉得它对GUI的抽象是糟糕的,差劲概念表达.
  回复  更多评论
  

# re: Custom SWT widgets ? 2007-01-03 16:09 hhh[匿名]
MFC认为 GUI元素是原子的,GUI元素自身提供了设置它属性的API基本决定了这个GUI元素给外部定制它的能力.低灵活性!
  ______________________________________________________
  
  这一条是很多win下GUI框架的通病,swt也好不到哪里去.

swing的组件都是四两拨千斤,模型和绘图都是分离的,如表格
  JTable 就有TableModel ---->JTable<-----TableUI,从结构来说JTable完全扮演着控制器的角色.从API的使用者角度来说它是一个MVC体系的外观,让人想起了设计模式中的外观模式.
  
  因为swing中一个GUI元素就是一个MVC体系,而不原子的.
  除此之外还可以为组件自定义renderer/editor.
  回复  更多评论
  

# re: Custom SWT widgets ? 2007-01-03 16:15 hhh[匿名]
eclipse构建在swt而不是swing上,现在看来是个错误,如果不是这样,sun可能早放弃nb了。

我很喜欢Eclipse,可就这个swt让人不快!

  回复  更多评论
  

# re: Custom SWT widgets ? 2007-01-03 16:16 hhh[匿名]
 SWT从实质上说是头疼医头,脚疼医脚,这种本质决定的它的架构不好,当需求增加时,当面临现实的Customization时,当面临各种不同操作系统时,它的缺点就暴露出来了,简单的说:
  
   对Java 界面涉及不深的人往往偏好SWT,对Java界面设计非常熟悉才能真正洞悉Swing的内涵。人们对于SWT的喜爱是同他对SWT的了解深刻度成反比的, Swing恰好相反。对于SWT了解越浅的人,越对他的光鲜外表(主要是Eclipse的表现比较好,但毕竟Eclipse的漂亮程度归公于他的界面设计艺术,实质并不在SWT的高级)。随着开发者对于SWT的深入了解,就会发现越来越多的问题和局限性,了解不深的人,或者从传统C/C++, WinForm以及MFC等东东转过了的人,往往被SWT的表面所迷惑。可以不客气的说SWT是AWT早已抛弃的努力。
  
   SWT凭着它对Windows平台的优化迷惑很多人,又以它的编程简单性忽悠了很多人。其实SWT它在Linux的效率和Mac OS上的错误简直要让人发疯。如果你真的想需要Windows平台的界面,干嘛要用Java? C#岂不是更好?
  
   SWT 一个迷惑人的地方是所谓平台保真(Fidelity),其实这也造成它不能轻易扩展和Customization的根源,而且,开发者往往喜欢平台保真的界面,而用户却不一定,相当的用户最终喜欢WinAMP等类似可以更换皮肤和LookAndFeel的功能。即使是平台保真度,Java6已经完完全全的实现平台一致性。SWT已经没有优势可言。
  
   SWT的另一个迷惑人的地方就是所谓速度,人们往往认为本地组件就比模拟组件要快,其实不然,由于 Java虚拟机和运行时速度的提高,Java编写的程序已经可以与C的速度相媲美,加上Swing内在有虚拟机内嵌代码和热编译的等功能支持,Java实现的Swing代码已经和操作系统本身的组件没有什么两样了。最近有JavaLobby上论坛贴出了一个名字叫MiGLayout,关于测试GUI界面的 BenchMark,测试的结果是:
  
   Windows平台上Swing的启动速度稍慢于SWT,运行速度几乎一样。
   Linux平台上Swing的速度高于SWT,无论是启动速度还是运行速度。GTK2上的速度差别就更大。
   MacOS上Swing的速度高于SWT,无论是启动速度还是运行速度。
  
   IBM当时开发Eclipse时,Swing的确不争气,所以才有了SWT的出现,但是如果当时Sun就把Swing打磨成现在这个样子,估计IBM也不会轻易开发SWT,但也多亏SWT的出现,促使Sun将Swing进行改革。
  
   最近一个国外叫EvansData的咨询公司调查的GUI工具结果是:
   swing占有率47%,名列第一,WinForm名列第二,SWT不超过8%
  
   结论是:
   SWT不会消亡,因为有Eclipse的存在,如果想为它开发插件,就必须使用SWT。另外和AWT相似,SWT可以应用到Mobile开发界面上,因为Swing毕竟太大了。
   Swing因为Java5和6的推动将席卷Java Desktop市场。
  
   毕竟任何的东西的存在都是合理,存在即合理,合理就不可能消逝。80/20的关系。
  
   对我的话持怀疑态度的人,尤其是Swing的速度可以去看看JavaLobby的这个帖子:
  http://www.javalobby.org/java/forums/t78884.html
   如果对Swing占有市场率有怀疑的人可以去看看这条新闻:
  http://www.clientjava.com/blog/2005/10/18/1129665205787.html




SWT从实质上说是头疼医头,脚疼医脚,这种本质决定的它的架构不好。
  ——————————————————————
  一针见血


  回复  更多评论
  

# re: Custom SWT widgets ? 2007-01-03 16:21 hhh[匿名]
热炒Swing,重塑C/S辉煌(转)

最近对Web有点倦了,正赶上很多程序员又开始反思C/S的好处,开始热炒Smart Client及Flex之类的东西。加之接触到一两个基于.NET winForm的系统,感觉还是相当棒的,不由得开始重思C/S系统。
  其实话说回来,在局域网和intranet领域,还是C/S好使。所以在业界疯炒Web2.0的时代,并不能阻止无数基于Win32API的老掉牙系统继续统治各单位的主要业务,妨碍以此为生的公司与程序员们大捞钞票。这充分说明了C/S的价值与必要性。毕竟很多C/S下简单的界面功能,换到B/S下可得费不少心血,响应也远不及C/S。各企事业单位的大多数业务系统,也并不需要internet。由此可见祖先的“中庸之道”是何等明智。以笔者愚见,B/S 适用于必须以internet为传输媒介的系统,换言之也就是各组织的外部系统;而内部业务系统,多数情况下仍应以C/S为佳。
  以上论点并非要我们回到上一个基于Win32API的时代,而是需要开辟一个全新的C/S时代。上一代C/S系统,至今仍难以解决诸如客户端部署、信息孤岛,过分依赖数据库,访问容量低,扩展性与可维护性差等等“硬伤”。原因至少有三,一是以数据库系统为核心,无法适应数据交换标准化与多媒介的要求;二是因 Win32API的垄断造成各平台与软件不兼容;三是未能应用OOP的方式进行开发,未进行分层设计,代码高度耦合。
  那么我们的新C/S时代应该以怎样的方式解决问题?首先,数据不应再采用以数据库、文档厂商自行其事的标准(如Oracle、SQL Server、WinWord),而应采用统一的标准(现在主要是XML);其次,应脱离专属平台与垄断技术;第三,深入研究OOP,清晰地分层设计,降低代码的耦合度,使系统具有良好的可维护性与扩展性。只有这样,我们才能在客户业务与IT技术飞速发展的时代,充分保护与发展好我们的即有设计与代码,快速满足客户的需求。像上个时代不断重建那种“做好就扔”的快速原型系统之悲剧不应一再重演。
  标准是有了,那么有这样的技术吗?有,而且近在眼前,那就是Swing。其实这技术Sun老早就提供给大家了,可惜在国内一直火不起来。其中原因及笔者力推的原因有三:一、Swing这种基于虚拟机的技术,比之Win32 Form慢多了。这在三五年前的确是个大问题。但现在的机器快得太多,连MS也力推基于虚拟机的winForm,这说明虚拟机的时代全面到来是确定无疑了。但MS因其垄断政策,导致.NET成了瘸腿的虚拟机,跨平台的要求短期内是不可能的。与平台脱耦合的要求只有Swing才能担当。二、Swing的设计要求高。Swing将经典的MVC可谓发挥得淋漓尽致。而由于历史原因,国内绝大多数C/S程序员一直于缺乏OOP习惯及经验。对Swing这种经典设计方式是难以接受的,无法领会由分层所带来的巨大长远优势。故宁可死守VB、PB、Delphi这些失去前途的东西,或者抵不住MS winForm快餐的诱惑,再次投入MS过程式编程的泥潭。不深入理解OOP,不深入领会分层思想,几乎无法有效使用Swing,这正是Sun的严格与苦心,大家要用心体会啊。三、MS与国内很多程序员自Swing诞生以来,就无时不对其冷嘲热讽。以致于有志于C/S的Java程序员(笔者曾经的状态)甚至绝望地热炒起Swt这种不成熟的东西。于是在无处不在的中伤与分裂中,Swing在国内一直开不了花。前一阵子听说Swing在国外其实是很火的,上网用google一搜"Swing"-95,700,000,再一比"winForm"-4,980,000。大家没想到吧!如果是在国内的C/S市场,只 Swing只怕连winForm的十分之一都不及。这不得不提上面所说的“历史原因”。国外的C/S程序员,大都有丰富的C++经历,早已体会了OOP与分层的好处,故Swing必然成为虚拟机时代最好的选择;而国内的C/S程序员,基本上是在RAD的浪潮中投入行业的,非常缺乏OOP的经验。导致今天不但在C/S领域,就算在B/S领域,也不断地以ASP模式制造无前途的系统。所以包括Swing、EJB、JSF等等这些东西被很多人瞎搞与乱骂也就不足为怪了。
  
  顺便提一个最近热炒的Flex、MS Expression。Flex不过是Adobe的专属技术,最多落个Flash的结局就不错了。MS的东西风格与前途一向如此,不再多论。而身处于编程世界最广泛、最成熟的Java体系,Swing无疑是最有前途与通用性的。
  
  应当说,现在国内大部分程序员,是曾经并且将要继续靠C/S吃饭的。那么,但愿此文能让大家重新认真地、负责任地审视并应用Swing,体会那纯正的OOP与分层设计,再塑国内又一个高度繁荣并且高质量的C/S时代。  回复  更多评论
  

# re: Custom SWT widgets ? 2007-01-03 16:23 hhh[匿名]
说了这么多,请问LZ有何感想!


人们对于swing的误解太多了!
殊不知它是一个有着优秀架构的框架!  回复  更多评论
  

# re: Custom SWT widgets ? 2007-02-12 09:35 abba
swing做出来的东西要比bs的严谨多了,严重支持  回复  更多评论
  

# re: Custom SWT widgets ?[未登录] 2007-03-12 16:42 xy
SWING做出来的东西看起来与本地操作系统格格不入,是败笔之一。
另外若长时间后返回SWING界面,打开选文件或目录的窗体,窗体一片灰,难道这就是一个好程式或软件吗?  回复  更多评论
  

# re: Custom SWT widgets ?[未登录] 2007-03-12 16:48 xy
SWING所谓的MVC设计,对于一两年经验的大多数程序员来说,使用的难度可不小,如客制JTABLE,SOURCE用的设计模式多多,可却效果SOSO,令人失望。说白了就是脱裤子放屁,多此一举。  回复  更多评论
  

# re: Custom SWT widgets ?[未登录] 2007-03-12 17:00 xy
对于SWT大众级应用软件用过好几个,最执行的BT,RSS都见SWT程序的影子,另外也暂不提GOOGLE的即将出笼的P2P客户端(基于SWT,跨平台),而SWING大众软件却没用过,对SWING失望呀,不知hhh[匿名] 对此有何感想?  回复  更多评论
  

# re: Custom SWT widgets ? 2007-03-22 16:59 yeko
http://www.autoscatto-erotico.ffclan.it
http://www.bottiglie-nel-culo.ffclan.it
http://www.culi-e-fighe.ffclan.it
http://www.donne-ninfomani.ffclan.it
http://www.eros-bologna.ffclan.it
http://www.gli-uomini-preferiscono-le-bionde.ffclan.it
http://www.fumetti-manga-porno-gratis.ffclan.it
http://www.intl-xx-hacker.ffclan.it
http://www.honda-cbr-xx.ffclan.it
http://www.lunghezza-vagina.ffclan.it
http://www.musica-andina.ffclan.it
http://www.nere-sexy.ffclan.it
http://www.oroscopo-erotico.ffclan.it
http://www.portobello-annunci.ffclan.it
http://www.real-boobs.ffclan.it
http://www.storie-erotiche-vissute.ffclan.it
http://www.turkish-air.ffclan.it
http://www.uomini-nudi-per-donne.ffclan.it
http://www.z-pornostar.ffclan.it
http://www.voglia-di-sesso.ffclan.it
http://www.www-vogliose-org.ffclan.it
http://www.kut-nl.ffclan.it
http://www.qui-mamme-it.ffclan.it
http://www.300-video-gratis.ffclan.it
http://www.jessica-rizzo-free.ffclan.it
http://www.yahoo-giochi.ffclan.it
http://www.xbox-giochi.ffclan.it
http://www.899-erotico.ffclan.it  回复  更多评论
  

# re: Custom SWT widgets ? 2007-04-23 22:56 kingsure
无意间看到了该主题,无论SWING还是SWT,对于一个做GUI的程序员来说都是非常棒的库。本人多年来一直处于SWING和SWT的开发,当年抛弃SWING转入SWT实在是SWING的速度太糟糕,而SWT凭着Eclipse的出色表现,确实令很多开发真倾倒,虽然SWING的速度一直在提高,一直在努力而且其出色的框架及真正的做到一次编译到处运行[SWT是一次编译,到处修改:) ]。
但话说回来SWT并没有象楼上说的那么差劲,深入了解过Eclipse的程序都了解,Eclipse中使用的最出色的并不是直接都SWT进行操作,SWT只是为JFACE进行了底层操作,在Eclpise中基本上使用了JFACE对数据及ACTION进行了封装(JFACE是可以单独使用的)。所以其在界面中对数据对象的操作及设计思想并不亚于SWING的Model,可能单纯的SWT和SWING确实无法抗衡。但加上JFACE的封装,所谓对SWING的OOP设计倾倒的同胞可以尝试下JFACE,可能会改变您的想法。  回复  更多评论
  

# re: Custom SWT widgets ? 2007-08-04 08:29 睡教觉主
Jface/swt,我觉得很2。
没有太想清楚哪里2,但是就是觉得很2。

swing......设计完美,太完美了以至于有点迂腐。

mfc......就是shit一坨。不提也罢。不过现在不都用.net了么?  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: