Swt/Jface tableViewer入门教程一(显示tableViewer)

时间:2023-01-18 12:42:54
 1,简单显示,表格的式样见注释中的内容
Swt/Jface tableViewer入门教程一(显示tableViewer)import  org.eclipse.jface.viewers.TableViewer;
Swt/Jface tableViewer入门教程一(显示tableViewer)
import  org.eclipse.swt.SWT;
Swt/Jface tableViewer入门教程一(显示tableViewer)
import  org.eclipse.swt.widgets.Display;
Swt/Jface tableViewer入门教程一(显示tableViewer)
import  org.eclipse.swt.widgets.Shell;
Swt/Jface tableViewer入门教程一(显示tableViewer)
import  org.eclipse.swt.widgets.Table;
Swt/Jface tableViewer入门教程一(显示tableViewer)
import  org.eclipse.swt.widgets.TableColumn;
Swt/Jface tableViewer入门教程一(显示tableViewer)
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)
public   class  TestTableViewer  {
Swt/Jface tableViewer入门教程一(显示tableViewer)    
private static Table table;
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)    
/**
Swt/Jface tableViewer入门教程一(显示tableViewer)     * Launch the application
Swt/Jface tableViewer入门教程一(显示tableViewer)     * 
@param args
Swt/Jface tableViewer入门教程一(显示tableViewer)     
*/

Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)    
public static void main(String[] args) {
Swt/Jface tableViewer入门教程一(显示tableViewer)        
final Display display = Display.getDefault();
Swt/Jface tableViewer入门教程一(显示tableViewer)        
final Shell shell = new Shell();
Swt/Jface tableViewer入门教程一(显示tableViewer)        shell.setSize(
500375);
Swt/Jface tableViewer入门教程一(显示tableViewer)        shell.setText(
"SWT Application");
Swt/Jface tableViewer入门教程一(显示tableViewer)        
//注意这里,SWT.NULTI代表可以选择多行,SWT.FULL_SELECTION代表可以整行选择,SWT.BORDER边框,SWT.V_SCROLL ,SWT.H_SCROLL滚动条
Swt/Jface tableViewer入门教程一(显示tableViewer)
        final TableViewer tableViewer = new TableViewer(shell, SWT.MULTI | SWT.FULL_SELECTION | SWT.BORDER|SWT.V_SCROLL|SWT.H_SCROLL);
Swt/Jface tableViewer入门教程一(显示tableViewer)        
Swt/Jface tableViewer入门教程一(显示tableViewer)        table 
= tableViewer.getTable();
Swt/Jface tableViewer入门教程一(显示tableViewer)        table.setLinesVisible(
true);
Swt/Jface tableViewer入门教程一(显示tableViewer)        table.setHeaderVisible(
true);
Swt/Jface tableViewer入门教程一(显示tableViewer)        table.setBounds(
9779373154);
Swt/Jface tableViewer入门教程一(显示tableViewer)
Swt/Jface tableViewer入门教程一(显示tableViewer)        
final TableColumn newColumnTableColumn = new TableColumn(table, SWT.NONE);
Swt/Jface tableViewer入门教程一(显示tableViewer)        newColumnTableColumn.setWidth(
39);
Swt/Jface tableViewer入门教程一(显示tableViewer)        newColumnTableColumn.setText(
"ID");
Swt/Jface tableViewer入门教程一(显示tableViewer)
Swt/Jface tableViewer入门教程一(显示tableViewer)        
final TableColumn newColumnTableColumn_1 = new TableColumn(table, SWT.NONE);
Swt/Jface tableViewer入门教程一(显示tableViewer)        newColumnTableColumn_1.setWidth(
85);
Swt/Jface tableViewer入门教程一(显示tableViewer)        newColumnTableColumn_1.setText(
"姓名");
Swt/Jface tableViewer入门教程一(显示tableViewer)        
Swt/Jface tableViewer入门教程一(显示tableViewer)        
final TableColumn newColumnTableColumn_2 = new TableColumn(table, SWT.NONE);
Swt/Jface tableViewer入门教程一(显示tableViewer)        newColumnTableColumn_2.setWidth(
41);
Swt/Jface tableViewer入门教程一(显示tableViewer)        newColumnTableColumn_2.setText(
"性别");
Swt/Jface tableViewer入门教程一(显示tableViewer)
Swt/Jface tableViewer入门教程一(显示tableViewer)        
final TableColumn newColumnTableColumn_3 = new TableColumn(table, SWT.NONE);
Swt/Jface tableViewer入门教程一(显示tableViewer)        newColumnTableColumn_3.setWidth(
43);
Swt/Jface tableViewer入门教程一(显示tableViewer)        newColumnTableColumn_3.setText(
"年龄");
Swt/Jface tableViewer入门教程一(显示tableViewer)
Swt/Jface tableViewer入门教程一(显示tableViewer)        
final TableColumn newColumnTableColumn_4 = new TableColumn(table, SWT.NONE);
Swt/Jface tableViewer入门教程一(显示tableViewer)        newColumnTableColumn_4.setWidth(
126);
Swt/Jface tableViewer入门教程一(显示tableViewer)        newColumnTableColumn_4.setText(
"创建日期");
Swt/Jface tableViewer入门教程一(显示tableViewer)        
Swt/Jface tableViewer入门教程一(显示tableViewer)        shell.open();
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)        
while (!shell.isDisposed()) {
Swt/Jface tableViewer入门教程一(显示tableViewer)            
if (!display.readAndDispatch())
Swt/Jface tableViewer入门教程一(显示tableViewer)                display.sleep();
Swt/Jface tableViewer入门教程一(显示tableViewer)        }

Swt/Jface tableViewer入门教程一(显示tableViewer)    }

Swt/Jface tableViewer入门教程一(显示tableViewer)}
2,加入布局
显示的效果不好,我们要加入布局,让view填充整个画面在shell.open()后加上
ok,效果达到
3,为TableViewer加上数据,光突突的样子不好看。这里是demo所以不再从数据库里边取数据了。自己构造一个List用来做数据。实际使用中也是这么使用,不过不同的是这里是随意构造的list,而显示实际使用中是从数据库取出数据构造list.
(1)构造一个people类,同时给People类提供一个构造假数据的方法getPeople()
Swt/Jface tableViewer入门教程一(显示tableViewer)import  java.util.ArrayList;
Swt/Jface tableViewer入门教程一(显示tableViewer)
import  java.util.Date;
Swt/Jface tableViewer入门教程一(显示tableViewer)
import  java.util.List;
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)
public   class  People {
Swt/Jface tableViewer入门教程一(显示tableViewer)    
private Long id;
Swt/Jface tableViewer入门教程一(显示tableViewer)    
private String name;
Swt/Jface tableViewer入门教程一(显示tableViewer)    
private String sex;
Swt/Jface tableViewer入门教程一(显示tableViewer)    
private Integer age;
Swt/Jface tableViewer入门教程一(显示tableViewer)    
private Date createDate;
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)    
public People(Long id,String name,String sex,Integer age,Date createDate){
Swt/Jface tableViewer入门教程一(显示tableViewer)        
this.id = id;
Swt/Jface tableViewer入门教程一(显示tableViewer)        
this.name = name;
Swt/Jface tableViewer入门教程一(显示tableViewer)        
this.sex = sex;
Swt/Jface tableViewer入门教程一(显示tableViewer)        
this.age = age;
Swt/Jface tableViewer入门教程一(显示tableViewer)        
this.createDate = createDate;
Swt/Jface tableViewer入门教程一(显示tableViewer)    }

Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)    
public Integer getAge() {
Swt/Jface tableViewer入门教程一(显示tableViewer)        
return age;
Swt/Jface tableViewer入门教程一(显示tableViewer)    }

Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)    
public void setAge(Integer age) {
Swt/Jface tableViewer入门教程一(显示tableViewer)        
this.age = age;
Swt/Jface tableViewer入门教程一(显示tableViewer)    }

Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)    
public Date getCreateDate() {
Swt/Jface tableViewer入门教程一(显示tableViewer)        
return createDate;
Swt/Jface tableViewer入门教程一(显示tableViewer)    }

Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)    
public void setCreateDate(Date createDate) {
Swt/Jface tableViewer入门教程一(显示tableViewer)        
this.createDate = createDate;
Swt/Jface tableViewer入门教程一(显示tableViewer)    }

Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)    
public Long getId() {
Swt/Jface tableViewer入门教程一(显示tableViewer)        
return id;
Swt/Jface tableViewer入门教程一(显示tableViewer)    }

Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)    
public void setId(Long id) {
Swt/Jface tableViewer入门教程一(显示tableViewer)        
this.id = id;
Swt/Jface tableViewer入门教程一(显示tableViewer)    }

Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)    
public String getName() {
Swt/Jface tableViewer入门教程一(显示tableViewer)        
return name;
Swt/Jface tableViewer入门教程一(显示tableViewer)    }

Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)    
public void setName(String name) {
Swt/Jface tableViewer入门教程一(显示tableViewer)        
this.name = name;
Swt/Jface tableViewer入门教程一(显示tableViewer)    }

Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)    
public String getSex() {
Swt/Jface tableViewer入门教程一(显示tableViewer)        
return sex;
Swt/Jface tableViewer入门教程一(显示tableViewer)    }

Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)    
public void setSex(String sex) {
Swt/Jface tableViewer入门教程一(显示tableViewer)        
this.sex = sex;
Swt/Jface tableViewer入门教程一(显示tableViewer)    }

Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)    
public static List getPeople(){
Swt/Jface tableViewer入门教程一(显示tableViewer)        List list 
= new ArrayList();
Swt/Jface tableViewer入门教程一(显示tableViewer)        
int n = 30;
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)        
for(int i=1;i<n;i++){
Swt/Jface tableViewer入门教程一(显示tableViewer)            Long id 
= new Long(i);
Swt/Jface tableViewer入门教程一(显示tableViewer)            String name 
= ""+i;
Swt/Jface tableViewer入门教程一(显示tableViewer)            String sex 
= "";
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)            
if((i%2== 0){
Swt/Jface tableViewer入门教程一(显示tableViewer)                sex 
= "";
Swt/Jface tableViewer入门教程一(显示tableViewer)            }

Swt/Jface tableViewer入门教程一(显示tableViewer)            Integer age;
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)            
if(i<10){
Swt/Jface tableViewer入门教程一(显示tableViewer)                age 
= new Integer(i*10);
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)            }
else if(i>10 && i<100){
Swt/Jface tableViewer入门教程一(显示tableViewer)                age 
= new Integer(i);
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)            }
else if(i>100 && i<1000){
Swt/Jface tableViewer入门教程一(显示tableViewer)                age 
= new Integer(i/10);
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)            }
else{
Swt/Jface tableViewer入门教程一(显示tableViewer)                age 
= new Integer(22);
Swt/Jface tableViewer入门教程一(显示tableViewer)            }

Swt/Jface tableViewer入门教程一(显示tableViewer)            Date createDate 
= new Date();
Swt/Jface tableViewer入门教程一(显示tableViewer)            People people 
= new People(id,name,sex,age,createDate);
Swt/Jface tableViewer入门教程一(显示tableViewer)            list.add(people);
Swt/Jface tableViewer入门教程一(显示tableViewer)        }

Swt/Jface tableViewer入门教程一(显示tableViewer)        
return list;
Swt/Jface tableViewer入门教程一(显示tableViewer)    }

Swt/Jface tableViewer入门教程一(显示tableViewer)}

(2)给tableViewer提供内容器(IStructuredContentPorvider)和标签器(ITableLabelProvider)
如果想一个tableviewer显示数据,那必须给它提供内容器和标签器,内容器的作用是从List(也可以是其他的集合类)中提取出一个对象(例如People对应着表格的一行,数据库的一条记录),标签器的作用是从一个对象中提取出一个字段(例如年龄,对应着表格中的一个单元格,数据库中某一列的一个值)下边是内容器和标签器的代码:
内容器:
Swt/Jface tableViewer入门教程一(显示tableViewer)import  java.util.List;
Swt/Jface tableViewer入门教程一(显示tableViewer)
Swt/Jface tableViewer入门教程一(显示tableViewer)
import  org.eclipse.jface.viewers.IStructuredContentProvider;
Swt/Jface tableViewer入门教程一(显示tableViewer)
import  org.eclipse.jface.viewers.Viewer;
Swt/Jface tableViewer入门教程一(显示tableViewer)
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)
public   class  ContentProvider  implements  IStructuredContentProvider  {
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)        
public Object[] getElements(Object inputElement) {
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)            
if(inputElement instanceof List){
Swt/Jface tableViewer入门教程一(显示tableViewer)                
return ((List)inputElement).toArray();
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)            }
else{
Swt/Jface tableViewer入门教程一(显示tableViewer)                
return new Object[0];
Swt/Jface tableViewer入门教程一(显示tableViewer)            }

Swt/Jface tableViewer入门教程一(显示tableViewer)        }

Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)        
public void dispose() {
Swt/Jface tableViewer入门教程一(显示tableViewer)        }

Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)        
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
Swt/Jface tableViewer入门教程一(显示tableViewer)        }

Swt/Jface tableViewer入门教程一(显示tableViewer)    }
标签器:
Swt/Jface tableViewer入门教程一(显示tableViewer)import  java.text.SimpleDateFormat;
Swt/Jface tableViewer入门教程一(显示tableViewer)
Swt/Jface tableViewer入门教程一(显示tableViewer)
import  org.eclipse.jface.viewers.ITableLabelProvider;
Swt/Jface tableViewer入门教程一(显示tableViewer)
import  org.eclipse.jface.viewers.LabelProvider;
Swt/Jface tableViewer入门教程一(显示tableViewer)
import  org.eclipse.swt.graphics.Image;
Swt/Jface tableViewer入门教程一(显示tableViewer)
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)
public   class  TableLabelProvider  extends  LabelProvider  implements  ITableLabelProvider  {
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)        
public String getColumnText(Object element, int columnIndex) {
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)            
if (element instanceof People){
Swt/Jface tableViewer入门教程一(显示tableViewer)                People p 
= (People)element;
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)                
if(columnIndex == 0){
Swt/Jface tableViewer入门教程一(显示tableViewer)                    
return p.getId().toString();
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)                }
else if(columnIndex == 1){
Swt/Jface tableViewer入门教程一(显示tableViewer)                    
return p.getName();
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)                }
else if (columnIndex ==2){
Swt/Jface tableViewer入门教程一(显示tableViewer)                    
return p.getSex();
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)                }
else if (columnIndex == 3){
Swt/Jface tableViewer入门教程一(显示tableViewer)                    
return p.getAge().toString();
Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)                }
else if (columnIndex == 4){
Swt/Jface tableViewer入门教程一(显示tableViewer)                    SimpleDateFormat sdf 
= new SimpleDateFormat("yyyy-MM-dd");
Swt/Jface tableViewer入门教程一(显示tableViewer)                    
return sdf.format(p.getCreateDate());
Swt/Jface tableViewer入门教程一(显示tableViewer)                }

Swt/Jface tableViewer入门教程一(显示tableViewer)            }

Swt/Jface tableViewer入门教程一(显示tableViewer)            
return null;
Swt/Jface tableViewer入门教程一(显示tableViewer)        }

Swt/Jface tableViewer入门教程一(显示tableViewer)Swt/Jface tableViewer入门教程一(显示tableViewer)        
public Image getColumnImage(Object element, int columnIndex) {
Swt/Jface tableViewer入门教程一(显示tableViewer)            
return null;
Swt/Jface tableViewer入门教程一(显示tableViewer)        }

Swt/Jface tableViewer入门教程一(显示tableViewer)    }

注意这里:extends LabelProvider,为什么要加这个呢? 因为如果不加这个,因为实现 ITableLabelProvider 的缘故我们还要写四个空函数,而我们本身不需要在这四个空函数中实现什么,所以让它继承自LabelProvider,就可以避免四个空函数。
(3)把标签器和内容器给tableviewer
在shell.open()前边加上这几行

Swt/Jface tableViewer入门教程一(显示tableViewer)// 设置内容器
Swt/Jface tableViewer入门教程一(显示tableViewer)
tableViewer.setContentProvider( new  ContentProvider());
Swt/Jface tableViewer入门教程一(显示tableViewer)
// 设置标签器
Swt/Jface tableViewer入门教程一(显示tableViewer)
tableViewer.setLabelProvider( new  TableLabelProvider());
Swt/Jface tableViewer入门教程一(显示tableViewer)
// 把数据集合给tableView
Swt/Jface tableViewer入门教程一(显示tableViewer)
tableViewer.setInput(People.getPeople());
Swt/Jface tableViewer入门教程一(显示tableViewer)
// 这样利用内容器和标签器就能从setInput得到的数据集合分解出显示表格需要的数据。这是一个典型的mvc的实现.

4,样式改变
如果想在每一列前加入一个checkbox
只需要在开始的式样中加入SWT.CHECK

好了到此一个简单的样子选择出来了,但这仅仅是开始,下边将继续介绍按列排序、过滤器、行的颜色设置、在表格上直接编辑等功能
 附上source:http://www.blogjava.net/Files/dreamstone/jface-1.rar