SWT中 TableViewer、Table、TableColumn、TableItem四大名山分别是什么么?

RCP TableViewer行选择相关
[问题点数:20分,结帖人superling]
RCP TableViewer行选择相关
[问题点数:20分,结帖人superling]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
本帖子已过去太久远了,不再提供回复功能。一.&&&&&&& 创建表格
1.&&&&&& setContentProvider 主要功能:把数据转换为表格需要的数据模型,这里转换为数组。
2.&&&&&& setLabelProvider 主要功能:设置每个单元格显示的文本和图片。
3.&&&&&& setInput 主要功能:提供数据
整体上的工作过程是:setInput()提供数据,setContentProvider()把setInput()提供的数据转换为表格能用的数据类型:数组,setLabelProvider()把这些数据按照我们想要的形式显示出来。他们三者遵照MVC思想。
二.&&&& &&为表格增加功能
1.&&& 右键菜单
1.1&&& 创建MenuManager()
1.2&&& 设置为表格的contextMenu
2.&&& 排序
2.1 调用TableViewer方法setSorter(Sorter sorter)为表格设置排序。
2.2 调用sorter.doSort(int column);触发排序。
3.&&& 编辑单元格内容
3.1&&& setColumnProperties 主要功能:给每个列设置一个属性,相当于设置了一个名字
3.2&&& setCellEditors 主要功能:设置每列的单元格是什么类型的编辑框,比如文本框,组合框,下拉框。
3.3&&& setCellModifier 主要功能:设置当前单元格是否可编辑,改变后的值怎么处理等等。
4.&&& 增加表格过滤
4.1 addFilter(ViewerFilter filter);
&& &&& 1. 表格中增加一行记录的方法:
TableViewer和数据模型(本例中的是List对象)中都能够增加删除一条记录,区别在于TableViewer中的方法只是在对显示界面的数据进行操作,并为改变数据模型中的数据;而直接在数据模型中增删数据需要调用TableViewer的refresh()方法才能显示出增删的数据。
&&&&&& 2.TableViewer的update()方法与refresh()方法的区别:
前者假定输入模型结构不变,后者认为输入模型结构发生变化;所以优先调用前者,减少系统开销。
&&& 3. TableColumn类:
它用来设置表格的title,它和表格的body是分开创建的,而且树也可以创建树的title,使用TreeColumn类,这时的树就是 表格树。
&&& 4. 如何改变表格的行高:
可以通过设置单元格图片的方式,间接的使单元格变高。
四.主要代码示例
&* @description:
&* @author Administrator
&* @version 1.0,
&* @Copyright
public class MyEditor extends EditorPart {
&&& public static final String ID = &rcptest.editors.MyEditor&;
&&& public static final String[] COLUMN_NAME = { &ID&, &NAME&, &SEX&, &COLOR& };
&&& private TableV
&&& private L
&&& public MyEditor() {
&&&&&&& super();
&&& @Override
&&& public void doSave(IProgressMonitor monitor) {
&&&&&&& // TODO Auto-generated method stub
&&& @Override
&&& public void doSaveAs() {
&&&&&&& // TODO Auto-generated method stub
&&& @Override
&&& public void init(IEditorSite site, IEditorInput input) throws PartInitException {
&&&&&&& // TODO Auto-generated method stub
&&&&&&& this.setSite(site);
&&&&&&& this.setInput(input);
&&&&&&& this.setPartName(input.getName());
&&& @Override
&&& public boolean isDirty() {
&&&&&&& // TODO Auto-generated method stub
&&& @Override
&&& public boolean isSaveAsAllowed() {
&&&&&&& // TODO Auto-generated method stub
&&& //创建表格的代码
&&& @Override
&&& public void createPartControl(Composite parent) {
&&&&&&& // TODO Auto-generated method stub
&&&&&&& persons = new ArrayList();
&&&&&&& persons.add(new PersonEO(1, &你好&, &man&, &black&));
&&&&&&& persons.add(new PersonEO(2, &wang&, &man&, &black&));
&&&&&&& table = new TableViewer(parent, SWT.FULL_SELECTION);
&&&&&&& for (int i = 0; i & 4; i++) {
&&&&&&&&&&& new TableColumn(table.getTable(), SWT.LEFT).setText(&title& + i);
&&&&&&&&&&& table.getTable().getColumn(i).pack();
&&&&&&& table.getTable().setHeaderVisible(true);
&&&&&&& table.getTable().setLinesVisible(true);
&&&&&&& table.setContentProvider(new MyContentProvider());
&&&&&&& table.setLabelProvider(new MyLabelProvider());
&&&&&&& table.setInput(persons);
&&&&&&& // add context menu
&&&&&&& this.createContextMenu();
&&&&&&& // enable table edit
&&&&&&& this.editor();
&&&&&&& // add sortor
&&&&&&& this.sorter();
&&& private void sorter() {
&&&&&&& table.setSorter(new Sorter());
&&&&&&& TableColumn column = table.getTable().getColumn(0);
&&&&&&& column.addSelectionListener(new SelectionListener() {
&&&&&&&&&&& public void widgetDefaultSelected(SelectionEvent e) {
&&&&&&&&&&&&&&& // TODO Auto-generated method stub
&&&&&&&&&&& }
&&&&&&&&&&& public void widgetSelected(SelectionEvent e) {
&&&&&&&&&&&&&&& // TODO Auto-generated method stub
&&&&&&&&&&&&&&& ((Sorter) table.getSorter()).doSort(1);
&&&&&&&&&&&&&&& table.refresh();
&&&&&&&&&&& }
&&&&&&& });
&&& private void editor() {
&&&&&&& table.setColumnProperties(COLUMN_NAME);
&&&&&&& CellEditor[] editors = new CellEditor[4];
&&&&&&& editors[0] = new TextCellEditor(table.getTable());
&&&&&&& editors[1] = new TextCellEditor(table.getTable());
&&&&&&& editors[2] = new TextCellEditor(table.getTable());
&&&& &&&editors[3] = new TextCellEditor(table.getTable());
&&&&&&& table.setCellEditors(editors);
&&&&&&& table.setCellModifier(new TableCellModifier());
&&& private void createContextMenu() {
&&&&&&& MenuManager menu = new MenuManager();
&&&&&&& menu.add(new AddAction(table, persons));
&&&&&&& menu.add(new DelAction(table));
&&&&&&& menu.add(new RefreshAction(table));
&&&&&&& menu.add(new FileterAction(table));
&&&&&&& Menu m = menu.createContextMenu(table.getControl());
&&&&&&& table.getTable().setMenu(m);
&&& @Override
&&& public void setFocus() {
&&&&&&& // TODO Auto-generated method stub
&&& class MyContentProvider implements IStructuredContentProvider {
&&&&&&& public Object[] getElements(Object inputElement) {
&&&&&&&&&&& // TODO Auto-generated method stub
&&&&&&&&&&& return ((List) inputElement).toArray();
&&&&&&& public void dispose() {
&&&&&&&&&&& // TODO Auto-generated method stub
&&&&&&& public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
&&&&&&&&&&& // TODO Auto-generated method stub
&&& class MyLabelProvider implements ITableLabelProvider {
&&&&&&& public Image getColumnImage(Object element, int columnIndex) {
&&&&&&&&&&& // TODO Auto-generated method stub
&& &&&&&&&&&
&&&&&&& public String getColumnText(Object element, int columnIndex) {
&&&&&&&&&&& // TODO Auto-generated method stub
&&&&&&&&&&& PersonEO person = (PersonEO)
&&&&&&&&&&& if (columnIndex == 0)
&&&&&&&&&&&&&&& return person.getID() + &&;
&&&&&&&&&&& if (columnIndex == 1)
&&&&&&&&&&&&&&& return person.getName();
&&&&&&&&&&& if (columnIndex == 2)
&&&&&&&&&&&&&&& return person.getGender();
&&&&&&&&&&& if (columnIndex == 3)
&&&&&&&&&&&&&&& return person.getColor();
&&& &&&&&&&&
&&&&&&& public void addListener(ILabelProviderListener listener) {
&&&&&&&&&&& // TODO Auto-generated method stub
&&&&&&& public void dispose() {
&&&&&&&&&&& // TODO Auto-generated method stub
&&&&&& &public boolean isLabelProperty(Object element, String property) {
&&&&&&&&&&& // TODO Auto-generated method stub
&&&&&&&&&&&
&&&&&&& public void removeListener(ILabelProviderListener listener) {
&&&&&&&&&&& // TODO Auto-generated method stub
&* @description:
&* @author Administrator
&* @version 1.0,
&* @Copyright
public class Sorter extends ViewerSorter {
&&& private static final int ASC = 0;
&&& private static final int DES = 1;
&&& public void doSort(int column) {
&&&&&&& if (column == this.column)
&&&&&&&&&&& order = 1 -
&&&&&&& else {
&&&&&&&&&&& this.column =
&&&&&&&&&&& order = DES;
&&& @Override
&&& protected Comparator getComparator() {
&&&&&&& // TODO Auto-generated method stub
&&&&&&& return super.getComparator();
&&& public int compare(Viewer viewer, Object e1, Object e2) {
&&&&&&& int result = 0;
&&&&&&& PersonEO p1 = (PersonEO) e1;
&&&&&&& PersonEO p2 = (PersonEO) e2;
&&&&&&& switch (column) {
&&&&&&& case 1:
&&&&&&&&&&& result = p1.getID() & p2.getID() ? 1 : -1;
&&&&&&&&&&&
&&&&&&& case 2:
&&&&&&&&&&& result = pare(p1.getName(), p2.getName());
&&&&&&&&&&&
&&&&&&& case 3:
&&&&&&&&&&& result = pare(p1.getGender(), p2.getGender());
&&&&&&&&&&&
&&&&&&& case 4:
&&&&&&&&&&& result = pare(p1.getColor(), p2.getColor());
&&&&&&&&&&&
&&&&&&& if (order == DES)
&&&&&&&&&&& result = -
3. CellModifier类
&* @description: 编辑单元格内容
&* @author Administrator
&* @version 1.0,
&* @Copyright
public class TableCellModifier implements ICellModifier{
&&& public boolean canModify(Object element, String property) {
&&&&&&& // TODO Auto-generated method stub
&&&&&&& return true;
&&& public Object getValue(Object element, String property) {
&&&&&&& // TODO Auto-generated method stub
&&&&&&& return &...&;
&&& public void modify(Object element, String property, Object value) {
&&&&&&& // TODO Auto-generated method stub
4. filter类
&* @description:表格过滤
&* @author Administrator
&* @version 1.0,
&* @Copyright
public class FileterAction extends Action {
&&& ViewerF
&&& TableV
&&& public FileterAction(TableViewer table){
&&&&&&& this.table =
&&&&&&& this.setText(&filter&);
&&&&&&& filter = new ViewerFilter(){
&&&&&&&&&&& @Override
&&&&&&&&&&& public boolean select(Viewer viewer, Object parentElement, Object element) {
&&&&&&&&&&&&&&& // TODO Auto-generated method stub
&&&&& &&&&&&&&&&PersonEO p = (PersonEO)
&&&&&&&&&&&&&&& return p.getGender().equals(&women&);
&&&&&&&&&&&&&&
&&&&&&&&&&& }
&&&&&&& };
&&&&&&& this.setChecked(false);
&&& public void run(){
&&&&&&& if(this.isChecked())
&&&&&&&&&&& table.addFilter(filter);
&&&&&&& else
&&&&&&&&&&& table.removeFilter(filter);
&&&&&&& table.refresh();
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:49678次
积分:1426
积分:1426
排名:第11899名
原创:103篇
转载:41篇
(37)(60)(20)(27)Tableviewer中为表格添加删除、修改link - 推酷
Tableviewer中为表格添加删除、修改link
package com.pcm.chni.recipereport.
import java.util.ArrayL
public class TableViewerDel {
protected S
private String findLinkKey = &FindLink&;
private List listcuCustomers = new ArrayList();
private ArrayList&Hyperlink& delList = new ArrayList&Hyperlink&();
private final FormToolkit formToolkit = new FormToolkit(Display
.getDefault());
private TableViewer tableV
private boolean finashaddlink=
* Launch the application.
* @param args
public static void main(String[] args) {
TableViewerDel window = new TableViewerDel();
window.open();
} catch (Exception e) {
e.printStackTrace();
* Open the window.
public void open() {
Display display = Display.getDefault();
createContents();
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
* Create contents of the window.
protected void createContents() {
shell = new Shell();
shell.setSize(450, 300);
shell.setText(&SWT Application&);
tableViewer = new TableViewer(shell, SWT.BORDER
| SWT.FULL_SELECTION);
table = tableViewer.getTable();
table.setLinesVisible(true);
table.setHeaderVisible(true);
table.setBounds(10, 27, 422, 191);
TableColumn tableColumn = new TableColumn(table, SWT.NONE);
tableColumn.setWidth(100);
tableColumn.setText(&数据显示&);
TableColumn tableColumn_1 = new TableColumn(table, SWT.NONE);
tableColumn_1.setWidth(100);
tableColumn_1.setText(&删除&);
tableViewer.setContentProvider(new RecipereportTableViewContentProvider());//内容器
tableViewer.setLabelProvider(new RecipereportTableViewLabelProvider());//标签器
listcuCustomers.add(&zhangsan&);
listcuCustomers.add(&lis&);
listcuCustomers.add(&wangwu&);
listcuCustomers.add(&liuliu&);
listcuCustomers.add(&qiqi&);
tableViewer.setInput(listcuCustomers);
linkListener();
table.addListener(SWT.MeasureItem, new Listener() {//表格监听器 表格画完后设置高度
public void handleEvent(Event event) {
event.height = 23;
Listener delayInit = new Listener() {
public void handleEvent(Event arg0) {
if(table.getItemHeight() & 23 || listcuCustomers.size() == 0 || finashaddlink){
linkListener();
finashaddlink =
table.addListener(SWT.MeasureItem, delayInit);
public void linkListener() {
deleteAllLinks();//删除所有的删除链接
if (listcuCustomers != null && listcuCustomers.size() & 0) {
for (int i = 0; i & listcuCustomers.size(); i++) {//获取集合中的数据
TableItem itemi = table.getItem(i);//表格中一行数据
final Hyperlink hprlnDeleO = formToolkit.createHyperlink(table,
&删除&, SWT.CENTER);//创建一个删除链接
formToolkit.paintBordersFor(hprlnDeleO);
TableEditor editor = new TableEditor(table);//编辑table
editor.grabHorizontal = editor.grabVertical =
editor.setEditor(hprlnDeleO, itemi, 1);//设置删除链接
delList.add(hprlnDeleO);//将删除链接添加到delList中
hprlnDeleO.addMouseListener(new MouseAdapter() {
public void mouseUp(MouseEvent e) {
TableItem xxx = table.getItem(new Point(e.x +
hprlnDeleO.getBounds().x, e.y +
hprlnDeleO.getBounds().y));
String hhlfir = (String) xxx.getData();//获取点击这一行的数据
listcuCustomers.remove(hhlfir);//点击删除remove listcuCustomers中的数据
tableViewer.setInput(listcuCustomers);//重新set数据
linkListener();//在每一行中添加删除链接
hprlnDeleO.setEnabled(true);//将删除按钮设置为启用
hprlnDeleO.setData(findLinkKey, hprlnDeleO);
protected void deleteAllLinks() {
for (int i = 0; i & delList.size(); i++) {//循环 删除所有删除链接
deleteLink(delList.get(i));
delList.clear();//清空list
protected void deleteLink(Hyperlink hprlnk_Delete) {
if (hprlnk_Delete == null) {
hprlnk_Delete.dispose();//摧毁所有的删除链接
Hyperlink findlink = (Hyperlink) hprlnk_Delete.getData(findLinkKey);
if (findlink != null) {
findlink.dispose();
} catch (Exception ex) {
ex.printStackTrace();
package com.pcm.chni.recipereport.
import java.util.L
import org.eclipse.jface.viewers.IStructuredContentP
import org.eclipse.jface.viewers.V
public class RecipereportTableViewContentProvider implements IStructuredContentProvider{
@SuppressWarnings(&unchecked&)
public Object[] getElements(Object inputElement) {
// TODO Auto-generated method stub
if(inputElement instanceof List)
return ((List)inputElement).toArray();
return new Object[0];
public void dispose() {
// TODO Auto-generated method stub
public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
// TODO Auto-generated method stub
package com.pcm.chni.recipereport.
import org.eclipse.jface.viewers.ILabelProviderL
import org.eclipse.jface.viewers.ITableLabelP
import org.eclipse.swt.graphics.I
import com.pcm.chni.userManage.model.C
public class RecipereportTableViewLabelProvider implements ITableLabelProvider{
public Image getColumnImage(Object arg0, int arg1) {
// TODO Auto-generated method stub
public String getColumnText(Object element, int index) {
if(element instanceof Customer){
Customer cu=(Customer)
switch (index) {
return cu.getCustomerid();
return cu.getCustomername();
return cu.getSexid().equals(&1&)?&男&:&女&;
return cu.getBirthday();
return cu.getMobile();
return cu.getOrgname();
return cu.getDocname();
return &--&;
}else if(element instanceof String){
switch (index) {
return (String)
return &--&;
public void addListener(ILabelProviderListener arg0) {
// TODO Auto-generated method stub
public void dispose() {
// TODO Auto-generated method stub
public boolean isLabelProperty(Object arg0, String arg1) {
// TODO Auto-generated method stub
public void removeListener(ILabelProviderListener arg0) {
// TODO Auto-generated method stub
已发表评论数()
&&登&&&陆&&
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见}

我要回帖

更多关于 swt table 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信