`
aswang
  • 浏览: 848855 次
  • 性别: 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应用属性视图实现

    1. 创建视图类:首先,你需要创建一个新的Java类,这个类将作为你的属性视图。在这个类中,你需要重写`createPropertySheet()`方法,该方法用于创建和设置属性页的样式和内容。 2. 实现适配器:为了提供自定义的...

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

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

    RCP中adapter实现属性视图

    标题中的"RCP中adapter实现属性视图"意味着我们要在RCP应用中创建一个属性视图,用于展示对象的各种属性。属性视图通常是一个独立的窗口部件,显示选定对象的相关属性,如名称、类型、状态等。通过适配器,我们可以...

    EclipseRCP教程

    Eclipse RCP 的视图机制是其核心机制之一,提供了多种视图类型和视图之间的交互机制。在 Eclipse RCP 中,视图可以是以下几种类型: 1. Part:Eclipse RCP 的基本视图单元,提供了基本的用户界面元素。 2. View:...

    Eclipse RCP程序ViewPart占位功能的实现

    Eclipse RCP(Rich Client Platform)是一个用于构建桌面应用程序的强大框架,它允许开发者创建复杂的、可扩展的应用程序。本教程将深入探讨如何在Eclipse RCP程序中实现ViewPart的占位功能,这对于构建具有多视图的...

    rcp.zip_DEMO_RCP dialog_java rcp_rcp

    学习这些示例,RCP初学者可以逐步掌握如何在Java环境中利用RCP框架搭建桌面应用,包括创建视图和对话框、实现用户交互、以及增强输入体验等功能。每个示例都应包含源代码和详细的注释,方便学习者跟踪和理解代码逻辑...

    RCP popupMene高级教程 使用Visibility定制弹出菜单

    创建一个rcp工程,模板使用有一个view的 step2.创建popupMenu step2_1.新建类Action1: step2_2.添加扩展点: 好的step2已经结束了,现在您可以运行一下程序,看看效果. 接下来将要进行的是,只有选中Three时...

    RCP 插件项目自学的教程

    6. 创建视图(View) - 视图是RCP应用程序中显示数据和提供交互操作的区域。开发者可以通过继承`ViewPart`类并实现其方法来创建自定义视图。视图可以在透视图(Perspective)中打开和关闭,通过`IViewRegistry`和`...

    Hibernate +  RCP + MySQL+ Jfreechart 开发实例 

    在本实例中,我们将学习如何搭建RCP环境,创建视图、编辑器和透视图,以及如何实现窗口和菜单的交互逻辑。 接下来,MySQL是一种广泛使用的开源关系型数据库管理系统,以其性能、稳定性和易用性而备受青睐。在本实例...

    菜鸟EclipseRCP学习之路

    在"菜鸟Eclipse RCP学习之路"中,初学者应该会了解到如何创建一个新的Eclipse RCP项目。这通常涉及到以下几个步骤: 1. 安装Eclipse IDE for RCP and RAP Developers版本,这是一个专门为RCP开发定制的集成开发环境...

    RCP 产品介绍图片

    6. **插件开发**:RCP的插件开发是其核心特色之一,开发者可以利用Eclipse的插件开发工具创建自定义功能。图片可能会展示插件开发的流程,包括插件声明、类定义和API使用等。 7. **可定制性与可扩展性**:RCP的灵活...

    JAVA3D动画 Eclipse RCP

    3. **创建视图(View)**:RCP应用中的显示组件称为视图,你可以创建一个新的视图来展示JAVA3D动画。右键点击工程,选择"New" &gt; "Other",然后在"Plug-in Development"中选择"View",输入视图的ID和名称。 4. **...

    Eclipse RCP详细教程

    Eclipse RCP的核心特性之一是它的灵活性和可扩展性。这种灵活性体现在多个方面,例如通过插件机制可以轻松地添加新功能或修改现有行为。此外,Eclipse RCP还支持多种UI组件和技术,如Swing和SWT,这使得开发者可以...

    RCP中文入门教程.rar

    在“RCP中文入门教程.pdf”中,你可能会学习到如何创建一个新的RCP项目,编写插件,定义扩展点,创建视图和编辑器,以及如何管理和配置用户的首选项。教程还可能涵盖如何调试和打包RCP应用,以及如何利用Eclipse的...

    RCP 开发实例 源码

    - 使用Eclipse IDE进行RCP开发,因为它内置了对RCP的支持,包括插件管理、透视图编辑、视图和编辑器创建等工具。 - PDE(Plug-in Development Environment)是Eclipse中专门用于RCP和OSGi开发的工具集。 通过学习...

    在RCP中显示JFreeChart报表

    总结起来,将JFreeChart报表集成到RCP应用涉及引入依赖、创建视图、绘制和展示图表,以及可能的交互功能实现。这不仅可以提升RCP应用的数据可视化能力,还能为用户提供更直观的数据解读体验。通过实践和不断探索,你...

    rcp 工具栏

    3. **创建工具栏(Creating the Toolbar)**:在工作台的视图或编辑器中,通过`IToolBarManager`接口创建工具栏实例,并添加到相应的视图或编辑器上。 4. **添加按钮(Adding Buttons)**:利用`IToolItem`类,为每...

    Eclipse RCP开发教程

    Eclipse Rich Client Platform (RCP) 是一个用于构建桌面应用程序的框架,它基于 Eclipse IDE 平台,允许开发者利用 Eclipse 的强大功能和丰富的插件系统来创建自定义的、可扩展的应用程序。Eclipse RCP 的核心理念...

    rcp 学习资料下载,一个简单的rcp例子

    2. **理解工作台结构**: 学习如何创建视图、编辑器以及透视图,并了解它们之间的交互。 3. **事件模型**: 了解RCP中的事件模型,如何通过命令(Command)和事件(Event)进行交互。 4. **服务(Service)机制**: ...

Global site tag (gtag.js) - Google Analytics