`

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 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};
		}
		
	}
}
  • 大小: 11.3 KB
分享到:
评论

相关推荐

    SWT/JFace专题 --- SWT/JFace概述

    JFace 建立在SWT之上,提供了一层抽象,简化了GUI开发的复杂性。JFace的目标是通过提供数据绑定、视图模型、对话框和服务等高级构造,来提高开发者的生产力。例如,它使用模型-视图-控制器(MVC)架构,将数据管理与...

    Swt/Jface tableViewer入门教程一(显示tableViewer)

    在本文中,我们将深入探讨如何使用Swt/Jface库中的`tableViewer`组件来创建一个基本的表格视图。Swt(Standard Widget Toolkit)是Java中用于开发原生界面的应用程序开发工具包,而Jface是建立在Swt之上的抽象层,...

    swt/jface tableViewer开发简化

    本篇文章将聚焦于SWT/JFace中的tableViewer组件的开发与简化。 首先,`tableViewer`是JFace库中用于展示表格数据的核心组件。它为开发者提供了一种方便的方式来显示和操作数据,同时处理了诸如排序、过滤等复杂功能...

    SWT/Jface API 3.4

    SWT 是一个直接与操作系统进行交互的底层库,提供了丰富的控件和组件,而 JFace 建立在 SWT 之上,提供了一层抽象,简化了 GUI 的设计和实现,使其更易于管理和维护。 在 SWT/Jface API 3.4 版本中,我们关注以下几...

    Swt/Jface tableViewer入门教程三(加入在表格上直接编辑数据)

    在本文中,我们将深入探讨如何使用Swt/Jface库中的`TableViewer`组件来创建一个功能丰富的表格,并实现用户可以直接在表格上编辑数据的功能。Swt/Jface是Eclipse平台的一部分,提供了一套用于构建图形用户界面(GUI...

    eclipse swt/jface核心应用源码

    5. 表格和树的模型(Table and Tree Models):SWT和JFace提供了处理表格和树数据的类,如`TableViewer`和`TreeViewer`,它们支持数据的过滤、排序和分页。 6. 事件处理(Event Handling):SWT和JFace使用监听器...

    SWT/JFace从入门到精通

    - 探索JFace:了解JFace如何简化SWT的使用,如利用TreeViewer和TableViewer展示数据。 - 练习MVC:通过创建一个简单的数据编辑视图,实践JFace的MVC模式。 - 扩展Eclipse:学习如何创建Eclipse插件,将SWT/JFace...

    SWT/JFACE API

    SWT (Standard Widget Toolkit) 和 JFace 是两个用于构建Java图形用户界面(GUI)的开源库,它们在Java开发领域中被广泛使用,特别是在Eclipse IDE及其插件开发中。SWT是底层的UI库,提供了与操作系统原生控件直接...

    swt/jface api帮助文档

    在学习和使用SWT和JFace API时,查阅这份中文帮助文档将非常有益。它会详细解释每个类、接口和方法的功能,以及如何在实际项目中应用它们。通过深入理解和实践,你可以创建出高效、美观且易于维护的Java桌面应用程序...

    Eclipse SWT/JFace 核心应用的全部源代码

    其次,JFace是在SWT基础上构建的一层抽象,它简化了SWT的使用,提供了一种面向对象的API,使得开发人员可以更加专注于业务逻辑,而不是底层的GUI细节。JFace包括数据绑定、视图管理、对话框和服务等组件,它将许多...

    SWT/JFace分页

    标题 "SWT/JFace分页" 指的是在Java编程中使用SWT(Standard Widget Toolkit)和JFace库实现用户界面时的分页功能。SWT是Eclipse项目提供的一种用于创建本地化图形用户界面(GUI)的开源库,而JFace是在SWT基础上...

    Ecilpse的SWT/JFace例子

    JFace则是在SWT之上的一个抽象层,它的目标是简化GUI开发,减少代码量,并提供数据绑定和事件处理机制。JFace将SWT的底层细节隐藏起来,让开发者可以更加专注于应用逻辑而不是UI实现。例如,JFace的Dialogs、Views和...

    SWT/JFace 3.5 API (CHM)

    7. 表格和树:TableViewer和TreeViewer的使用,以及如何自定义列、行操作和数据提供者。 8. 表单构建:JFace表单构建器简化了复杂表单的创建,如FormToolkit和FormLayout的运用。 通过"SWT-JFace-3.5-API.chm"文件...

    SWT/JFACE 资料

    2. 控件的使用:如何创建和配置SWT控件,如Button、Text、Shell等,以及JFace的高级控件,如TableViewer和TreeViewer。 3. 事件处理:如何监听和响应用户的操作,如点击按钮、选择列表项等。 4. 布局管理:如何使用...

    SWT/JFace编程

    - **JFace的引入**:JFace是在SWT之上的一层抽象,它简化了GUI编程,减少了代码量,提高了可读性和可维护性。 - **数据绑定**:JFace的DataBinding机制使数据与UI控件自动保持同步,降低了手动同步的复杂性。 - *...

    Eclipse Swt/Jface核心应用 (01-03章)

    JFace是建立在SWT之上的高级抽象层,简化了GUI开发的复杂性。它提供了模型-视图-控制器(MVC)设计模式的实现,以及对话框、表视图、树视图等高级控件。JFace的目标是提高代码的可读性和可维护性,减少重复代码。 ...

    Eclipse Swt/Jface核心应用 (19-23章)

    2. **JFace**:JFace是建立在SWT之上的抽象层,简化了GUI开发,通过提供数据绑定、视图模型和控制器模式来减少代码量。它还引入了一些高级组件,如表视图、树视图和对话框。 3. **布局管理**:Eclipse SWT中,布局...

    Eclipse Swt/Jface核心应用 (14-19章)

    2. **JFace概述**:JFace是建立在SWT之上的一个高级UI框架,它简化了SWT组件的使用,提供了模型-视图-控制器(MVC)架构,使得代码更加模块化,易于维护。JFace提供了对话框、表视图、树视图、数据绑定等功能,为...

    SWT/JFace API(English)

    **SWT (Standard Widget Toolkit) 和 JFace API** 是Java编程中用于构建图形用户界面(GUI)的重要工具包,尤其在开发Eclipse插件或基于Eclipse RCP(Rich Client Platform)的应用程序时非常常见。SWT是面向底层...

    SWT & JFace_最新最全_API

    例如,JFace的TreeViewer和TableViewer可以帮助开发者轻松创建和管理树形或表格视图。 **API** `SWT & JFace_API_(最新最全).chm` 文件是一个包含SWT和JFace最新、最全面的API文档的离线版。CHM(Compiled Help ...

Global site tag (gtag.js) - Google Analytics