SWT 中TableView显示数据

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");
//设置宽度为11
tlayout.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() {
@Override
public void widgetSelected(SelectionEvent e) {
// 创建一个checkbox对象
CheckboxTableViewer check=new CheckboxTableViewer(table);
//获取所有的checkbox
Object 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());
//把数据集合给tableView
tableViewer.setInput(new Data().addlist());
//这样利用内容器和标签器就能从setInput得到的数据集合分解出显示表格需要的数据。这是一个典型的mvc的实现.
}
}



/**
*
* 给tableViewer提供内容器(IStructuredContentPorvider)和标签器(ITableLabelProvider)
*如果想一个tableviewer显示数据,那必须给它提供内容器和标签器,
*内容器的作用是从List(也可以是其他的集合类)
*中提取出一个对象(例如People对应着表格的一行,
*数据库的一条记录),标签器的作用是从一个对象中提取出一个字段(例如年龄,对应着表格中的一个单元格
*,数据库中某一列的一个值)
*
*
* 内容器
*/

final class ContextProvider implements IStructuredContentProvider{

/**
*
* 在这里对所有集中记录进行处理
*/
@Override
public Object[] getElements(Object element) {
// 在这里将list转换成数组
if(element instanceof List){
/**
*nstanceof是Java的一个二元操作符,和==,>,
*<是同一类东东。由于它是由字母组成的,
*所以也是Java的保留关键字。
*它的作用是测试它左边的对象是否是它右边的类的实例
*/
return ((List) element).toArray();//将list转换成一个数组
}else{
//返回一个空
return new Object[0];
}
}

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

@Override
public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
// TODO Auto-generated method stub
}
}

/**
*
* ITableLabelProvider 会出现4个空函数 我们不需要他 有时候 继承LabelProvider
*/
class tablepriv extends LabelProvider implements ITableLabelProvider{

@Override
public Image getColumnImage(Object arg0, int arg1) {
// TODO Auto-generated method stub
return null;
}

@Override
public String getColumnText(Object arg0, int arg1) {
// TODO Auto-generated method stub
return null;
}
}
/**
* 标签器 (对单行记录进行处理)
* @author Administrator
*
*/
final class tableLableProvider implements ITableLabelProvider{

@Override
public Image getColumnImage(Object element, int index) {
//Image image=new Image(device, data)
//return ;
return null;
}

/**
* 这个方法返回的是各列的记录的文字
* 参数1:输入的对象
* 参数2:列号
* 返回值:注意一定要避免Null值,否则出错
*/
@Override
public 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 "";
// }
@Override
public void addListener(ILabelProviderListener arg0) {
// TODO Auto-generated method stub
}

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

@Override
public boolean isLabelProperty(Object arg0, String arg1) {
// TODO Auto-generated method stub
return false;
}

@Override
public 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{

@Override
public Object[] getChildren(Object arg0) {
// TODO Auto-generated method stub
return null;
}

@Override
public Object getParent(Object arg0) {
// TODO Auto-generated method stub
return null;
}

@Override
public boolean hasChildren(Object arg0) {
// TODO Auto-generated method stub
return false;
}

@Override
public Object[] getElements(Object arg0) {
// TODO Auto-generated method stub
return null;
}

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

@Override
public 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
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值