关注开源代码的实际应用
AWT和SWT实现原理不同:AWT控件相当于是一笔一画绣出来的,参加java.awt.Component.paint(Graphics g),性能差;而SWT调用了操作系统后台原生库,org.eclipse.swt.widgets.Control类型中就没有类似的paint方法 了,但是有一个接口org.eclipse.swt.graphics.Drawable。实现原理的不同带来了性能和用户视觉的差异。
SWING是基于AWT提供的MVC不完全实现,JFACE是基于SWT提供的MVC不完全实现。两者的核心作用都是提供了viewer和模型封装的概 念,从设计实现层面看,SWING更加唯美一些,JFACE则更加侧重于实用。SWING和JFACE两者都偏重于行为控制上下文,而对UI数据(例如, 一个文本框控件中的内容)的管理都没有做太多的设计。JFACE中略有改进,提供了setData的概念。JFACE是为了Eclipse而生的,虽然后 来 RCP出来了,又做了其他的包装宣传,典型的体现就是提供了JFace Text Framework和其他一些用户构建Eclipse元素的UI支持,也提供了一些系统资源管理(ImageRegsitry、 ResourceManager等)等附加功能。
SWING框架与代码很优美,但效率低,特别是高级控件如各种选择框超慢,与Windows本身不协调,使用体验差;而且再怎么使用LookAndFeel,还是不美观,总是感觉画的不清晰。