RCP开发浅谈之SWT,JFACE
- SWT
什么是SWT?
SWT全名是Standard Widget Toolkit是一个开源的GUI编程框架,我们每一个java开发者,在学习java开发的时候都会接触到awt以及swing这两个图形库,与awt,swing两个图形库不同,swt的优势体现于底层调用本地的图形库,大大提高了运行速度(损失了一定跨平台性)。SWT的一个很重要的一点,一个控件并不是单独存在的,而是存在于父控件中。这样当父控件disposed后,子控件也一定很disposed了。每一个swt控件的构造函数,都要依托于一个parent容器。
Table table = new Table(parent,SWT.MULTI|SWT.H_SCROLL);
- JFACE
既然有了SWT,为什么会有JFACE的诞生呢?当然是为了弥不了对视图层,控制层,数据层的隔离,进行了MVC的封装。比如数据来源就是Model.通过
tableViewer.setInput(objs);
数据如何组织(Controller)
tableViewer.setContentProvider(new ArrayContentProvider)
数据如何显示(Viewer)
tableViewer.setLabelProvider(..);
table展示数据依赖于索引,jface封装了很多方法,你只需传入一些对象就可玩成对数据的过滤,排序,组织等功能。
下面是一个具体table和tableviewer的demo:
依赖于5个包:
import java.util.List;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
impor