SWT/JFACE之TableViewer的使用

测试SWT/JFACE tableViewer对象的使用
效果图:

[img]http://dl.iteye.com/upload/attachment/0067/6864/27856e5a-4367-3c84-9c20-87d594117697.png[/img]


/**
* 测试TableViewer
* @description {description}
* @className TableViewTest
* @author share
* @date 2012-5-7 上午11:36:55
*/
public class TableViewerTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new TableViewerTest().creatTable();
}

private static Display display = new Display();
private static Shell shell = new Shell(display);

//tableViewer数据源
private List<Person> list = new ArrayList<Person>();
private Table table;

/**
* 创建一个TableViewer对象-->设置数据源/设置内容提供者/设置Table列标签内容提供者
* -->为TableViewer对象的Table设置没一个列名
* 创建一个线程去读取Person对象提供给Table
* 创建一个模拟线程产生Person对象并添加到数据源中
*/
public void creatTable(){
shell.setText("Test TableViewer");
TableColumnLayout tableColumnLayout = new TableColumnLayout();
shell.setLayout(tableColumnLayout);

TableViewer tv = new TableViewer(shell,SWT.FULL_SELECTION);
tv.setContentProvider(new TvContentProvider());
tv.setInput(list);

table = tv.getTable();
table.setHeaderVisible(true);//设置表格头部是否可见
table.setLinesVisible(true);//设置线条是否可见

//设置Table的列
TableColumn tcId = new TableColumn(table, SWT.NONE);
tableColumnLayout.setColumnData(tcId, new ColumnPixelData(150,true,true));
tcId.setText("id");

TableColumn tcName = new TableColumn(table, SWT.NONE);
tableColumnLayout.setColumnData(tcName, new ColumnPixelData(150,true,true));
tcName.setText("名字");

TableColumn tcSex = new TableColumn(table, SWT.NONE);
tableColumnLayout.setColumnData(tcSex, new ColumnPixelData(150,true,true));
tcSex.setText("性别");

/**
* 给Table设置数据,模拟1秒添加一条
*/
new Thread(new Runnable() {
final Display display = Display.getDefault();

@Override
public void run() {
while(true){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
display.asyncExec(new Runnable() {
public void run() {
if(!list.isEmpty()){
Person p = list.remove(0);
//设置表格数据
TableItem item = new TableItem(table, SWT.None);
item.setText(p.toArray());
}
}
});
}
}
}).start();

/**
* 模拟生产数据
*/
new Thread(new Runnable() {

@Override
public void run() {
while(true){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Person p = new Person();
int id = new Random().nextInt(1000);
p.setId(id+"");
p.setName("我是"+id);
p.setSex(id%2==0?"男":"女");
list.add(p);
}
}
}).start();

shell.pack();
shell.open();
while(!shell.isDisposed()){
if(!display.readAndDispatch())
display.sleep();
}
display.dispose();

}

/***
* TableViewer内容提供者/就是为TableViewer提供数据集合
* @description {description}
* @className TvContentProvider
* @author Share
* @date 2012-5-7 上午11:33:17
*/
class TvContentProvider implements IStructuredContentProvider{

@Override
public void dispose() {
// TODO Auto-generated method stub

}

@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {

}

@Override
public Object[] getElements(Object inputElement) {
// TODO Auto-generated method stub
if(inputElement instanceof List){
return ((List) inputElement).toArray();
}
return new Object[0];
}

}

/**
* Person entity对象
* @description {description}
* @className Person
* @author share
* @date 2012-5-7 上午11:36:29
*/
class Person {
private String id;
private String name;
private String sex;

public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}

public String[] toArray() {
// TODO Auto-generated method stub
return new String[]{this.id,this.name,this.sex};
}

}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值