第五节 JFace
JFace构建于SWT之上,提供了SWT的功能和MVC模式的易用性。SWT使用直接的API提供了原生(raw)的控件。例如,你创建一个表(table)控件,然后插入你想显示的行和列的数据。JFace提供了在SWT之上的抽象层,所以您只需对抽象层编程,然后抽象层会调用SWT API,从而取代了直接的SWT API编程。回忆一下用C编写窗口控件同使用C++的GUI库编写控件的区别,或是使用AWT与Swing的区别。这些类比将有助于阐述SWT与JFace的区别。例如,为了使用JFace中的表(table),你仍需创建表(table)控件,但是你不必向里面插入数据。你只要将content(或model) provider类和display(或 view) provider类提供给它。最后,表(table)根据provider类来决定数据内容和怎样显示。
JFace没有完全地对SWT进行抽象。即使在用JFace写的程序中,SWT及它底层API也是频频出现[4]。在本书第二部分打好SWT基础之后,我们将在第三部分探究JFace。
[4] 译注:原文为peek their heads through often