`

表格查看器

 
阅读更多

package com.test.cxm.plugin01.perspective;



import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.TableLayout;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.ViewerSorter;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;

public class HelloWorldSWT {
	
	public static void main(String args[]){
	    Display display=Display.getDefault();
	    Shell shell=new Shell();
		shell.setText("mmm");
		shell.setLayout(new FillLayout());
		
		final TableViewer tv=new TableViewer(shell, SWT.MULTI|SWT.BORDER);
		Table tb=tv.getTable();
		tb.setHeaderVisible(true);
		tb.setLinesVisible(true);
		
		//注意TableLayout布局的使用方法,它可以自定义列的长度
		TableLayout layout=new TableLayout();
		tb.setLayout(layout);
		layout.addColumnData(new ColumnWeightData(50));
		TableColumn tc1=new TableColumn(tb,SWT.NONE);
		tc1.setText("ID号");
		tc1.addSelectionListener(new SelectionAdapter() {
			boolean asc=true;
			public void widgetSelected(SelectionEvent e){
				tv.setSorter(asc?ViewSorter.ID_ASC:ViewSorter.ID_DESC);
				asc=!asc;
			}
		});
		
		layout.addColumnData(new ColumnWeightData(40));
		new TableColumn(tb,SWT.NONE).setText("姓名");
		layout.addColumnData(new ColumnWeightData(20));
		new TableColumn(tb, SWT.NONE).setText("性别");
		layout.addColumnData(new ColumnWeightData(20));
		new TableColumn(tb, SWT.NONE).setText("年龄");
		layout.addColumnData(new ColumnWeightData(60));
		new TableColumn(tb, SWT.NONE).setText("创建时间");
		
		tv.setContentProvider(new ContentPro());
		tv.setLabelProvider(new ViewPro());
		Object data=PeopleFactory.getPeople();
		tv.setInput(data);				
		
		
		shell.open();
		while(!shell.isDisposed()){
			if(!display.readAndDispatch()){
				display.sleep();
			}
		}
		display.dispose();
		
	}

}

 

 

内容提供者

package com.test.cxm.plugin01.perspective;

import java.util.List;

import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.Viewer;


/**
 * 内容提供者
 * 主要分为用于列表和表的IStructuredContentProvider和用于树的ITreeContentProvider
 * 前者主要作用将输入的数据转换为数组,后者为在树中获得子或父项目提供支持
 * 查看器通过setContentProvider方法与内容提供者相关联
 * 
 * @author Administrator
 *
 */
public class ContentPro implements IStructuredContentProvider{

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

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

	public Object[] getElements(Object arg0) {

		if(arg0 instanceof List){
			return ((List)arg0).toArray();
		}else{
			return new Object[0];
		}
	}

}

 

 

标签提供者

 

package com.test.cxm.plugin01.perspective;

import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.swt.graphics.Image;


/**
 * 标签提供者的主要作用是:决定实体的哪个字段在哪个列上显示,同样还有图像
 * @author Administrator
 *
 */
public class ViewPro implements ITableLabelProvider{
	
	private Image[] images=new Image[]{
			new Image(null,"icons/1.jpg"),
			new Image(null,"icons/2.jpg")
	};

	public void addListener(ILabelProviderListener arg0) {
		// TODO Auto-generated method stub
		
	}

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

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

	public void removeListener(ILabelProviderListener arg0) {
		// TODO Auto-generated method stub
		
	}

	public Image getColumnImage(Object arg0, int arg1) {
		People p=(People)arg0;
		if(p.getName().equals("ss2")){
			if(arg1==3){
				return images[1];
			}
		}
		
		if(p.getName().equals("ss1")){
			if(arg1==3){
				return images[0];
			}
		}
		
		return null;
	}

	/**
	 * 第一个参数代表记录
	 * 第二个参数代表哪一列
	 */
	public String getColumnText(Object arg0, int arg1) {
       
		People p=(People)arg0;
		if(arg1 == 0){
			return p.getId().toString();
		}
		
		if(arg1 == 1){
			return p.getName();
		}
		
		if(arg1 == 2){
			return p.isSex()?"男":"女";
		}
		
		if(arg1 == 3){
			return String.valueOf(p.getAge());
		}
		
		if(arg1 == 4){
			return p.getCreateDate().toLocaleString();
		}
		
		return null;
	}

}

 

实体类

package com.test.cxm.plugin01.perspective;

import java.util.Date;

public class People {

	private Long id;
	private String name;
	private boolean sex;
	private int age;
	private Date createDate;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public boolean isSex() {
		return sex;
	}

	public void setSex(boolean sex) {
		this.sex = sex;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public Date getCreateDate() {
		return createDate;
	}

	public void setCreateDate(Date createDate) {
		this.createDate = createDate;
	}

}

 

工厂类

package com.test.cxm.plugin01.perspective;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class PeopleFactory {
	
	public static List<People> getPeople(){
		List<People> list =new ArrayList<People>();
		
		People p1=new People();
		p1.setId(1l);
		p1.setName("ss1");
		p1.setSex(true);
		p1.setAge(28);
		p1.setCreateDate(new Date());
		
		
		People p2=new People();
		p2.setId(2l);
		p2.setName("ss2");
		p2.setSex(true);
		p2.setAge(28);
		p2.setCreateDate(new Date());
		
		People p3=new People();
		p3.setId(3l);
		p3.setName("ss3");
		p3.setSex(false);
		p3.setAge(28);
		p3.setCreateDate(new Date());
		
		list.add(p1);
		list.add(p2);
		list.add(p3);
		
		return list;
		
	}

}

 

 

排序类

package com.test.cxm.plugin01.perspective;

import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerSorter;


/**
 * 编写排序类是表格排序的关系,排序类一般继承ViewerSorter类
 * @author Administrator
 *
 */
public class ViewSorter extends ViewerSorter{
	
	private static final int ID=1;
	private static final int NAME=2;
	private int sortType;
	
	public static final ViewSorter ID_ASC=new ViewSorter(ID);
	public static final ViewSorter ID_DESC=new ViewSorter(-ID);
	public static final ViewSorter NAME_ASC=new ViewSorter(ID);
	public static final ViewSorter NAME_DESC=new ViewSorter(ID);
	
	
	private ViewSorter(int sortType){
		this.sortType=sortType;
	}

	public int compare(Viewer viewer,Object obj1,Object obj2){
		People p1=(People)obj1;
		People p2=(People)obj2;
		switch(sortType){
		case ID:{
			Long l1=p1.getId();
			Long l2=p2.getId();
			return l1.compareTo(l2);
		}
		case -ID:{
			Long l1=p1.getId();
			Long l2=p2.getId();
			return l2.compareTo(l1);
		}
		
		case NAME:{
			String s1=p1.getName();
			String s2=p2.getName();
			return s1.compareTo(s2);
		}
		
		case -NAME:{
			String s1=p1.getName();
			String s2=p2.getName();
			return s2.compareTo(s1);
		}
		
		}
		return 0;
		
	}
}
 
分享到:
评论

相关推荐

    小巧的电子表格查看器xlsview

    这时,一款小巧、便捷的电子表格查看器就显得尤为重要。"xlsview"就是这样一款工具,它专门设计用于查看XLS文件,无需安装Excel即可满足基本的浏览需求。 xlsview的主要优点在于其小巧的体积和高效的功能。它占用...

    HTML table表格编辑器

    HTML表格是网页设计中不可或缺的一部分,用于展示结构化数据,如数据列表或比较。"HTML Table表格编辑器"是一款工具,旨在提供一种便捷的方式,帮助...用户可以通过`index.htm`文件查看并体验这个编辑器的实际效果。

    Sheet Viewer:XLS和XLSX电子表格查看器-开源

    总的来说,Sheet Viewer是一款针对XLS和XLSX格式的电子表格查看工具,凭借其开源的特性,它提供了一种自由、安全且便捷的方式来查看Excel文件,尤其适合那些不希望或不需要完整功能集的Excel替代品的用户。...

    第11章 表格设计与数据处理.ppt

    很多Java GUI程序都会涉及到数据处理。 Java GUI程序的数据处理包括数据的输入、数据结构的设计、数据的存储、数据的输出等环节。 SWT GUI设计主要目的之...JFace库的表格查看器则专门管理和维护表格组件中的数据。

    WPS文档查看

    轻量级的工具轻量级的工具轻量级的工具轻量级的工具轻量级的工具轻量级的工具轻量级的工具轻量级的工具轻量级的工具

    java报表查看器

    2. 报表设计:通常,报表查看器支持用户通过拖放方式设计报表布局,包括表格、图表、图像和文本等元素。此外,还可能提供预定义的模板供快速使用。 3. 查询和过滤:用户可以根据需求对数据进行筛选和查询,比如设置...

    mdb数据库查看器

    标题中的“mdb数据库查看器”指的是用于访问和查看Microsoft Access的mdb格式数据库的工具。MDB是Access数据库的默认文件扩展名,它存储了表格、查询、报表、窗体、宏和模块等对象。这种类型的数据库通常用于小型...

    调试查看器

    调试查看器是一款强大的工具,专为开发者在调试过程中提供便利,尤其在处理数据集(DataSet)、数据表(DataTable)以及列表(List)等数据结构时。这款工具的独特之处在于其具备实时显示、查询以及过滤功能,使...

    常规网站数据库查看器

    【数据库查看器】是一种专业工具,它允许用户访问和管理不同类型的数据库,包括关系型数据库如MySQL、PostgreSQL、SQLite,以及非关系型数据库如MongoDB等。在IT行业中,数据库查看器扮演着至关重要的角色,它使得...

    DB(数据库查看器)

    DB(Database)数据库查看器是一种工具,主要用于查看和分析特定类型的数据库文件,如Paradox和DBF格式。这两种格式在过去的计算机系统和数据库管理中较为常见,尤其在桌面级数据库应用中。 Paradox是由Borland公司...

    超级数据查看器2.1 超级数据查看器: 安卓手机软件,excel工具,表格软件,数据库工具 能导入excel数据、

    超级数据查看器2.1 手机软件 超级数据查看器: 安卓手机软件,excel工具,表格软件,数据库工具。能导入excel数据、文本数据,建立手机使用的查询系统

    ACCESS数据库查看器.rar

    1. 数据浏览:查看器允许用户直观地查看数据库中的表格、字段和记录,无需通过复杂的编程接口。用户可以搜索、排序和过滤数据,便于数据分析和问题定位。 2. 表管理:查看器支持创建、修改和删除数据库中的表,包括...

    SQLite数据库查看器

    1. **视图查看**: 数据库查看器提供了友好的图形用户界面,使用户能够以表格的形式查看数据库中的表,每一行代表一条记录,每一列对应一个字段。用户可以轻松浏览数据,对大量信息进行快速概览。 2. **增删改查功能...

    md文件查看器免费版-md文件查看器免费版

    在没有专门的查看器时,这些文件通常用纯文本编辑器打开,但为了更好的阅读体验,我们可以使用MD文件查看器。 “md文件查看器免费版”是一款专为Markdown设计的软件,它提供了一个友好的界面,让用户可以更加直观地...

    基于jquery bootstrap 图片查看器

    **基于jQuery和Bootstrap的图片查看器** 在网页开发中,图片查看器是一个常见的功能,它允许用户以更直观的方式查看和交互图片。本项目利用了流行的前端框架jQuery和Bootstrap,构建了一个具有鼠标点击放大、相册...

    DBF表查看器

    DBF表查看器是一款专为处理DBF文件设计的实用工具,它允许用户方便地查看、编辑和管理这种类型的数据库文件。DBF文件是Dbase、FoxPro等早期数据库管理系统中常用的格式,常用于存储结构化的表格数据。下面将详细阐述...

    sql server数据库查看器

    3. **数据浏览**:用户能够直接在查看器中浏览和查询数据库中的表格数据,可以进行排序、筛选、搜索等操作,便于数据分析和问题排查。 4. **SQL编辑与执行**:数据库查看器一般包含一个内置的SQL编辑器,允许用户...

    Access数据库查看器 密码查看器

    不过都有广告,相比之下,破障Access数据查看器的广告更为讨厌,个人偏向使用华华Access数据库查看器。 四:ACpass密码查看器 可以来破解Access数据库密码,据说是最著名的Access密码破解器,不过杀毒软件会报毒。...

    db文件查看器

    "db文件查看器"是一款专为查看和编辑DB数据库文件设计的小巧且高效的软件工具。在IT领域,DB文件通常指的是数据库文件,它们用于存储结构化的数据,如表格、记录和字段,广泛应用于各种应用程序和操作系统中。这款...

    速达密码查看器

    总的来说,【速达密码查看器】是一款结合了数据库连接、查询、解密以及用户界面设计的工具,它的使用和开发涵盖了多种IT领域的技术知识,同时也提醒我们在使用这类工具时要注意数据安全和合规性问题。

Global site tag (gtag.js) - Google Analytics