我们从数据库中查询得到一个ResultSet的对象,如何将它显示到TableViewer中呢?
我们只能重新再定义一个新类,通过这个类生成对象,再把对象放到List中,再通过tableviewer.setInput(List对象)来实现。
比如我们现在有个getList()的方法,返回List对象。List里面的元素也是一个一个的对象,比如是员工对象ShowWorkers,包括员工的id和name;
Tableviewer显示内容
final TableViewer tableViewer = new TableViewer(shell, SWT.V_SCROLL
| SWT.FULL_SELECTION | SWT.BORDER);
//设置标签类
class TableLabelProvider extends LabelProvider implements ITableLabelProvider {
public String getColumnText(Object element, int columnIndex) {
ShowWorkers o = (ShowWorkers) element;
if (columnIndex == 0)
return o.getId().toString();
if (columnIndex == 1)
return o.getName().toString();
return "";
}
public Image getColumnImage(Object element, int columnIndex) {
return null;
}
}
//设置内容类,这个类基本上不用改适用于所有情况
class ContentProvider implements IStructuredContentProvider {
public Object[] getElements(Object inputElement) {
if (inputElement instanceof List) {
return ((List) inputElement).toArray();
}
return new Object[0];
}
public void dispose() {
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
}
tableViewer.setLabelProvider(new TableLabelProvider());
tableViewer.setContentProvider(new ContentProvider());
table = tableViewer.getTable();
table.setHeaderVisible(true); //表头可见
table.setLinesVisible(true); //格线可见
table.setBounds(275, 84, 346, 200);
tableViewer.setInput(getList()); //设置内容
TableViewer改变内容
table.clearAll(); //清空内容
tableViewer.setInput(getList()); //重新设置内容