`
aswang
  • 浏览: 838564 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

RCP之创建视图

    博客分类:
  • RCP
 
阅读更多

下面我们创建一个最基本的视图,表格视图,然后显示用户信息。

我们需要做这样几件事情:

1、在View.java中定义TabelViewer,为该表格视图创建标题,表格的列,同时还需要为它提供ContentProvider和LabelProvider

 

2、就是创建上面的ContentProvider和LabelProvider,这两个class的作用就是为表格视图提供数据的,其中LabelProvider就是将数据对应到表格的列上。

 

3、创建模型,为我们的表格视图提供数据。这里的模型就是一些POJO。

 

下面看看具体代码:

 

 

private UserLabelProvider labelProvider ;
	private TableViewer viewer ;

	public TableViewer getViewer() {
		return viewer;
	}
	
	@Override
	public void createPartControl(Composite parent) {
		GridLayout layout = new GridLayout(1, false);
		parent.setLayout(layout);
		createViewer(parent);
		
		List<TdUser> userList = ModelProvider.getInstance().getUsers() ;
		viewer.setInput(userList);
		getSite().setSelectionProvider(viewer);
		
		GridData gridData = new GridData();
		gridData.verticalAlignment = GridData.FILL;
		gridData.grabExcessHorizontalSpace = true;
		gridData.grabExcessVerticalSpace = true;
		gridData.horizontalAlignment = GridData.FILL;
		viewer.getControl().setLayoutData(gridData);
	}

	private void createViewer(Composite parent){
		viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
				| SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
		createColumns(viewer);
		viewer.setContentProvider(new UserContentProvider());
		labelProvider = new UserLabelProvider();
		viewer.setLabelProvider(labelProvider);
	}
	
	private void createColumns(final TableViewer viewer){
		Table table = viewer.getTable();
		String[] titles = { "ID","类型", "姓名", "性别","联系方式"};
		int[] bounds = { 50, 100, 100, 50 , 100 } ;
		for (int i = 0; i < titles.length; i++) {
			final int index = i;
			final TableViewerColumn viewerColumn = new TableViewerColumn(
					viewer, SWT.NONE);
			final TableColumn column = viewerColumn.getColumn();
			column.setText(titles[i]);
			column.setWidth(bounds[i]);
			column.setResizable(true);
			column.setMoveable(true);
			viewer.refresh();
		}
		table.setHeaderVisible(true);
		table.setLinesVisible(true);
	}

 这里给出了View.java中的关键属性和方法。

private TableViewer viewer;就是定义表格查看器,createPartControl这个方法是ViewPart中定义的,

我们需要覆盖该方法,以便定义我们自己的视图,在该方法中,我们实例化viewer,并设定布局。

createViewer是具体的实例化viewer的方法,在该方法中还设定了viewer的内容提供者和标签提供者。

createColumns方法是创建表格的列,同时包括定义表格的标题部分。

 

注意:我们需要注意在createPartControl中有这样一行代码:viewer.setInput(userList);

该代码的作用就是设定表格的数据源。

 

另外,我们看看UserContentProvider和UserLabelProvider代码:

 

public class UserContentProvider implements IStructuredContentProvider {
	@Override
	public Object[] getElements(Object inputElement) {
		List<TdUser> list = (List<TdUser>) inputElement;
		System.out.println(list.size());
		return list.toArray();
	}
	@Override
	public void dispose() {
	}
	@Override
	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
	}
}

 

 这个class看起来比较简单,它的作用就是将输入转变成一个数组。

 

 

public class UserLabelProvider extends LabelProvider implements
ITableLabelProvider {
	private Color systemColor;
	public UserLabelProvider() {
		systemColor = Display.getCurrent().getSystemColor(SWT.COLOR_YELLOW);
	}
	public String getColumnText(Object element, int columnIndex) {
		System.out.println("执行了方法:");
		TdUser user = (TdUser) element;
		switch (columnIndex) {
		case 0:return user.getSrid().toString() ;
		case 1:return user.getUtype();
		case 2:return user.getName();
		case 3:return user.getSex();
		case 4:return user.getPhone();
		default:throw new RuntimeException("Should not happen");
		}
	}
	@Override
	public Image getColumnImage(Object element, int columnIndex) {
		return null;
	}
}

 

 这个class的作用将模型的数据对应到表格的相应的列上。

至此,一个包含表格查看器的视图创建好了,我们可以看看效果了:

 

RCP之创建视图

 

另外,我们还在ApplicationWorkbenchWindowAdvisor中覆盖了一个方法postWindowCreate

@Override
    public void postWindowCreate() {
    	super.postWindowCreate();
    	Shell shell = getWindowConfigurer().getWindow().getShell();
        Rectangle screenSize = Display.getDefault().getClientArea();
        Rectangle frameSize = shell.getBounds();
        shell.setLocation((screenSize.width - frameSize.width) / 2,
	        		(screenSize.height - frameSize.height) / 2);
    }
 它的作用就是将我们的程序窗口在屏幕上居中显示。


  • 大小: 60.7 KB
0
0
分享到:
评论

相关推荐

    RCP 打开视图的不同实例,并设置不同的值,工程代码可运行

    RCP 打开视图的不同实例,并设置不同的值 ,创建一个视图,里面布局用了个tableviewer,通过一个Action,按钮打开该视图,每次打开的视图的内容可设置不同。 说明文档为 ...

    RCP 插件项目自学的教程

    有关rcp项目创建,视图创建。 开发插件项目基础

    Eclipse RCP详细教程

    2.创建你的第一个RCP程序 1 2.1.创建一个RCP程序 2 2.2.启动你的RCP程序 5 2.3.应用程序VS 产品 6 3.应用程序里的插件ID 7 4.Actions的用法(菜单和工具栏) 7 4.1.概述 7 4.2.通过编码添加 8 4.3.由...

    通过例子学习EclipseRCP开发

    本文讲述如何利用Eclipse RCP架构来进行应用开发。本文涵盖了创建RCP应用的各个方面:使用命令、视图、编辑器、对话框及创建与部署Eclipse产品。

    rcp单表开发流程

    rcp单表开发,从视图节点开始,到类的创建,到文件中界面的配置。实现一个单表的开发

    Eclipse RCP Plug-in开发自学教程(Eclipse3.6)

    2 创建第一个RCP程序 ........................................................................................................................11 2.1 创建一个RCP程序 ........................................

    Eclipse RCP Plugin 开发自学入门指南(CEC首发)

    将涉及以下内容:创建第一个 RCP 程序,创建菜单和工具栏,查看,编辑,对话,外部 JAR 的用法,向一个 RCP应用程序产品中添加标志和帮助。 每一章都基本独立于其他章节。 目录 1 富客户端平台 ....................

    RiMaP-RCP:风险管理平台(基于Eclipse RCP和WorldWind Java)

    RiMaP-RCP 日SK马nagement P latform...) 离线功能缓存管理(清理缓存,将数据添加到缓存,为选定的图层/区域创建缓存) world-wind-java-sdk-rcp *从存储库中设置为子模块。 查看插件自己的自述文件以获取更多文档

    slf4j-plus:高级 SLF4J 记录器添加了一些不错的功能和 Eclipse RCP 集成

    内部事务创建子事务或任意消息组 在 Eclipse 错误日志视图中显示日志消息 - 根据日志事务和组进行组织 发出请求用户注意的特殊日志消息,无需将 UI 依赖项引入您的包 通过对话框或 Eclipse RCP 应用程序中的状态项...

    付费查看JAVA源码-shr5rcp:shadowrun5富客户端平台是一个模型驱动的项目,用于管理shadowrun资源。例如一个shado

    付费查看JAVA源码shr5rcp 概述 这是一个为 rolegame shadowrun 5.0 管理资源和角色的程序。 它致力于创建和管理角色,提供游戏大师的帮助和报告。 参考下载软件。 现在它包含: 几个字符生成器 在核心规则书之后 ...

    Eclipse3.2绿色中文版无需安装

    这是一个端到端教程,用于说明如何创建插件、定义基于插件的产品、定制产品、导出 RCP 应用程序和定义基于功能部件的产品 通过安装预先准备好的样本来研究 Eclipse(可能需要连接因特网)。 多页面编辑器:显示如何...

    eclipse3.2官方简体中文版.rar

    Eclipse 插件开发创建 Eclipse 插件这是一个端到端教程,用于说明如何创建插件、插件扩展、功能部件、更新站点及如何安装和卸载功能部件 创建富客户机平台(RCP)应用程序这是一个端到端教程,用于说明如何创建...

    Eclipse_Swt_Jface_核心应用_部分19

    2.4.1 创建SWT程序 19 2.4.2 编译和运行程序 20 2.5 本章小结 21 第3章 Eclipse开发环境概述 22 3.1 Eclipse界面一览 22 3.2 Eclipse项目的文件结构 23 3.2.1 设置编译后.class文件的保存目录 23 ...

    olca-app:openLCA的源代码-java source code

    :包含用于编译openLCA并为Windows,Linux和macOS创建安装程序的构建脚本。 :包含openLCA中HTML视图的源代码(例如起始页面或报告视图)。 :包含与openLCA打包在一起的当前参考数据(单位,数量和流量)。 另...

    Eclipse权威开发指南2.pdf

    10.1 在RCP上构建应用程序的 理由...... 235 10.1.1 给企业带来的好处..... 235 10.1.2 给软件开发者带来的 好处..... 236 10.1.3 给用户带来的好处..... 236 10.2 复习Eclipse体系结构...... 237 10.2.1 Eclipse...

    Eclipse权威开发指南3.pdf

    10.1 在RCP上构建应用程序的 理由...... 235 10.1.1 给企业带来的好处..... 235 10.1.2 给软件开发者带来的 好处..... 236 10.1.3 给用户带来的好处..... 236 10.2 复习Eclipse体系结构...... 237 ...

    Eclipse权威开发指南1.pdf

    10.1 在RCP上构建应用程序的 理由...... 235 10.1.1 给企业带来的好处..... 235 10.1.2 给软件开发者带来的 好处..... 236 10.1.3 给用户带来的好处..... 236 10.2 复习Eclipse体系结构...... 237 ...

    EuroMath2-开源

    所见即所得XML编辑器,用于数学/文本文档创建和技术用途(FO,MathML,Svg)。 使用XSLT生成视图。 视图通过以下方式呈现:FOP和JEuclid。 编辑是上下文相关的。 Eclipse RCP应用程序,可通过插件扩展。

    JAVA程序开发大全---上半部分

    2.2.2 MyEclipse中的Navigator视图 27 2.3 定制MyEclipse的工作台 33 2.3.1 定制工作台外观 34 2.3.2 定制快捷键 35 2.3.3 定制编辑器 36 2.3.4 定制工作台公共设置 36 2.4 MyEclipse中常用操作 36 2.4.1 配置JRE 36...

Global site tag (gtag.js) - Google Analytics