SWT 中TableView显示数据

来源:互联网 发布:win10 网络视频 加载 编辑:程序博客网 时间:2024/05/02 15:37
package com.chni.from;import java.util.ArrayList;public class Windows {protected Shell shell;private Table table;// private Tree table;/*** Launch the application.* @param args*/public static void main(String[] args) {try {Windows window = new Windows();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.setImage(SWTResourceManager.getImage(Windows.class, "/image/IOC (302).ico"));shell.setSize(577, 407);shell.setText("第一次 接触SWT");//初始化TableViewer tableViewer = new TableViewer(shell, SWT.BORDER | SWT.FULL_SELECTION | SWT.CHECK );table = tableViewer.getTable();//CheckboxTreeViewer tableViewer=new CheckboxTreeViewer(shell,SWT.BORDER | SWT.FULL_SELECTION);//table = tableViewer.getTree();table.setToolTipText("");table.setLinesVisible(true);table.setHeaderVisible(true);TableLayout tlayout=new TableLayout();table.setLayout(tlayout);//使用tree 使用// TreeColumn tableColumn_1 = new TreeColumn(table, SWT.NONE);// tableColumn_1.setWidth(177);// tableColumn_1.setText("用户id");//设置宽度为11tlayout.addColumnData(new ColumnWeightData(25));//设置表格列的名称new TableColumn(table, SWT.NONE).setText("用户id");tlayout.addColumnData(new ColumnWeightData(30));new TableColumn(table, SWT.NONE).setText("姓名");tlayout.addColumnData(new ColumnWeightData(30));new TableColumn(table, SWT.NONE).setText("性别");tlayout.addColumnData(new ColumnWeightData(30));new TableColumn(table, SWT.NONE).setText("年龄");tlayout.addColumnData(new ColumnWeightData(30));new TableColumn(table, SWT.NONE).setText("地址");tlayout.addColumnData(new ColumnWeightData(30));new TableColumn(table, SWT.NONE).setText("邮箱");table.setBounds(29, 10, 540, 328);Button button = new Button(shell, SWT.NONE);button.addSelectionListener(new SelectionAdapter() {@Overridepublic void widgetSelected(SelectionEvent e) {// 创建一个checkbox对象CheckboxTableViewer check=new CheckboxTableViewer(table);//获取所有的checkboxObject obj[] =check.getCheckedElements();List<UserInfoList> list=new ArrayList<UserInfoList>();//将获取到的checkbox 放到list中 如果选择一个弹出信息for(Object b:obj){//判断获取的是否是userinfolist对象if(b instanceof UserInfoList){list.add((UserInfoList)b);}if(list !=null && list.size()>0 && list.size()==1){Shows show=new Shows(list.get(0));show.open();}}}});button.setBounds(390, 344, 72, 22);button.setText("选择一个");/*** 当People的记录集输入的tableViewer中,注意setInput的参数是Object也就是说它可以接受任何参数,* 不过它最常接受的还是Java的Collection(集合,这里为List)或者数组,* 那么tv是怎么知道如何来显示这么输入格式千差万别的数据的呢?就是依靠内容器和标签器(这里它两是一个内部类)*///设置内容器tableViewer.setContentProvider(new ContextProvider());//设置标签器tableViewer.setLabelProvider(new tableLableProvider());//把数据集合给tableViewtableViewer.setInput(new Data().addlist());//这样利用内容器和标签器就能从setInput得到的数据集合分解出显示表格需要的数据。这是一个典型的mvc的实现.}}/**** 给tableViewer提供内容器(IStructuredContentPorvider)和标签器(ITableLabelProvider)*如果想一个tableviewer显示数据,那必须给它提供内容器和标签器,*内容器的作用是从List(也可以是其他的集合类)*中提取出一个对象(例如People对应着表格的一行,*数据库的一条记录),标签器的作用是从一个对象中提取出一个字段(例如年龄,对应着表格中的一个单元格*,数据库中某一列的一个值)*** 内容器*/final class ContextProvider implements IStructuredContentProvider{/**** 在这里对所有集中记录进行处理*/@Overridepublic Object[] getElements(Object element) {// 在这里将list转换成数组if(element instanceof List){/***nstanceof是Java的一个二元操作符,和==,>,*<是同一类东东。由于它是由字母组成的,*所以也是Java的保留关键字。*它的作用是测试它左边的对象是否是它右边的类的实例*/return ((List) element).toArray();//将list转换成一个数组}else{//返回一个空return new Object[0];}}@Overridepublic void dispose() {// TODO Auto-generated method stub}@Overridepublic void inputChanged(Viewer arg0, Object arg1, Object arg2) {// TODO Auto-generated method stub}}/**** ITableLabelProvider 会出现4个空函数 我们不需要他 有时候 继承LabelProvider*/class tablepriv extends LabelProvider implements ITableLabelProvider{@Overridepublic Image getColumnImage(Object arg0, int arg1) {// TODO Auto-generated method stubreturn null;}@Overridepublic String getColumnText(Object arg0, int arg1) {// TODO Auto-generated method stubreturn null;}}/*** 标签器 (对单行记录进行处理)* @author Administrator**/final class tableLableProvider implements ITableLabelProvider{@Overridepublic Image getColumnImage(Object element, int index) {//Image image=new Image(device, data)//return ;return null;}/*** 这个方法返回的是各列的记录的文字* 参数1:输入的对象* 参数2:列号* 返回值:注意一定要避免Null值,否则出错*/@Overridepublic String getColumnText(Object element, int index) {switch(index){case 0:if(element instanceof UserInfoList){UserInfoList user=(UserInfoList)element;return user.getUserid();}else{return "--";}case 1:if(element instanceof UserInfoList){UserInfoList user=(UserInfoList)element;return user.getUsername();}else{return "--";}case 2:if(element instanceof UserInfoList){UserInfoList user=(UserInfoList)element;return user.getSex();}else{return "--";}case 3:if(element instanceof UserInfoList){UserInfoList user=(UserInfoList)element;return user.getAge()+"";}else{return "--";}case 4:if(element instanceof UserInfoList){UserInfoList user=(UserInfoList)element;return user.getArdder();}else{return "--";}case 5:if(element instanceof UserInfoList){UserInfoList user=(UserInfoList)element;return user.getEmail();}else{return "--";}}return "";}//// UserInfoList user=(UserInfoList)element;//// switch(index){//// case 0://// user.getUserid();//// case 1:// return user.getUsername();////// case 2://// return user.getSex();////// case 3:// return user.getAge()+"";////// case 4://// return user.getArdder();////// case 5://// return user.getEmail();//// }// return "";// }@Overridepublic void addListener(ILabelProviderListener arg0) {// TODO Auto-generated method stub}@Overridepublic void dispose() {// TODO Auto-generated method stub}@Overridepublic boolean isLabelProperty(Object arg0, String arg1) {// TODO Auto-generated method stubreturn false;}@Overridepublic void removeListener(ILabelProviderListener arg0) {// TODO Auto-generated method stub}}/**** 获取数据*/final class Data {public List<UserInfoList> addlist(){List<UserInfoList> list=new ArrayList<UserInfoList>();for(int i=0;i<5;i++){UserInfoList user=new UserInfoList("1", "张三", 12, "女", "贵州", "luo@163.com");list.add(user);}return list;}}/**** model*/final class UserInfoList {private String userid;private String username;public UserInfoList(String userid, String username, int age, String sex,String ardder, String email) {super();this.userid = userid;this.username = username;this.age = age;this.sex = sex;this.ardder = ardder;this.email = email;}public UserInfoList(){}private int age;private String sex;private String ardder;private String email;public String getUserid() {return userid;}public void setUserid(String userid) {this.userid = userid;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getArdder() {return ardder;}public void setArdder(String ardder) {this.ardder = ardder;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}}/**** 用户节点* @author Administrator**/final class MyContentProvider implements ITreeContentProvider{@Overridepublic Object[] getChildren(Object arg0) {// TODO Auto-generated method stubreturn null;}@Overridepublic Object getParent(Object arg0) {// TODO Auto-generated method stubreturn null;}@Overridepublic boolean hasChildren(Object arg0) {// TODO Auto-generated method stubreturn false;}@Overridepublic Object[] getElements(Object arg0) {// TODO Auto-generated method stubreturn null;}@Overridepublic void dispose() {// TODO Auto-generated method stub}@Overridepublic void inputChanged(Viewer arg0, Object arg1, Object arg2) {// TODO Auto-generated method stub}}// TableItem item = tableViewer.getTable().getItem(tableViewer.getTable().getSelectionIndex());// MessageDialog.openInformation(shell, "信息", "双击单元格:"+item.getText(0));//上传数据public void widgetSelected(SelectionEvent e) {//上传FileDialog dialog=new FileDialog(shell);dialog.setText("open");dialog.setFilterNames(new String[]{"图片文件(*.jpg)","图片文件(*.gif)"});dialog.setFilterExtensions(new String[]{"*.jpg", "*.gif"});String fileName = dialog.open();//取得打开图片的物理地址if (fileName!=null){text.setText(fileName);// Canvas.redraw();} 

0 0
原创粉丝点击