读书人

SWT/JFACE之TableViewer的运用

发布时间: 2012-07-30 16:19:05 作者: rapoo

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



/** * 测试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 stubnew 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();@Overridepublic 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() {@Overridepublic 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{@Overridepublic void dispose() {// TODO Auto-generated method stub}@Overridepublic void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}@Overridepublic Object[] getElements(Object inputElement) {// TODO Auto-generated method stubif(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 stubreturn new String[]{this.id,this.name,this.sex};}}}

读书人网 >行业软件

热点推荐