快速业务通道

使用Eclipse RCP进行桌面程序开发(三):视图和透视图 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
不难看出,它们的功能是创建视图特有的菜单栏和工具栏的, 结合上一小节的内容,我们应该很快就可以探索到怎么给视图添加漂亮的工具栏了,这里我 不再罗嗦。

再来看Perspective.java,不难发现,所有的透视图类都需要实现IPerspectiveFactory 接口,而该接口的createInitialLayout方法,就是描述工作台窗口中编辑器和视图的布局。 默认情况下,透视图中只包含一个编辑器区域,就是我们第一节中看到的那个效果。在 createInitialLayou中,我们可以通过以下几个方法向透视图中添加视图、编辑器和菜单:

addView  —— 添加视图

addActionSet —— 添加菜单和工具栏

createFolder —— 创建一个IForderLayou,可以让多个视图重叠在同一个位置

使用Eclipse RCP进行桌面程序开发(三):视图和透视图(5)

时间:2011-04-13 海边沫沫

写到这里,肯定有人会问,如果我要创建一个象Eclipse中的资源视图这样的视图,该怎 么做呢?这我们就要感谢org.eclipse.jface.viewers包了,Viewer,这里翻译为查看器,它 和视图是不一样的。JFace查看器是Jface对SWT部件的封装,它简化了我们对小部件的操作。 在使用查看器的时候,它的数据使用单独的模型对象来保存,使用查看器的setInput方法可 以为查看器设置模型,此外,在使用查看器的时候,需要为它提供ContentProvider(内容提 供器)和LabelProvider(标签提供器)。

JFace查看器主要分为以下几类:

1. ListViewer: 对应于SWT的列表控件,目的是将列表中的元素映射至SWT列表控件

2. TreeViewer: 对应于SWT的树控件,提供树的展开和折叠等基本操作

3. TableViewer: 对应于SWT的表控件,映射表中的元素

4. TextViewer: 对应于SWT的StyledText控件,创建编辑器的时候,使用这个查看器是 最合适不过了。

好了,介绍性的文字就写到这里,我想大家一定已经知道了探索的方向。下面,我们看一 个简单的示例,就是这篇文章开头给出的效果图。它是我模仿医院管理系统做的一个简单例 子,左边的视图就是使用了一个ListView查看器。这里给出它的关键代码:

public void createPartControl(Composite parent) { 2 3 4    viewer = new ListViewer(parent, SWT.BORDER); 5    viewer.setContentProvider(new PersonContentProvider()); 6    viewer.setLabelProvider(new PersonLabelProvider()); 7    viewer.setInput(new PersonModel()); 8 9    createActions(); 10    initializeToolBar(); 11    initializeMenu(); 12  }

可以看到,这里需要设置内容提供器和标签提供器和模型。下面,我们先创建一个病人类 Person.java:

1package cn.blogjava.youxia.views; 2 3public class Person { 4 5  private String name; 6  private String sex; 7  public String getName() { 8    return name; 9  } 10  public void setName(String name) { 11    this.name = name; 12  } 13  public String getSex() { 14    return sex; 15  } 16  public void setSex(String sex) { 17    this.sex = sex; 18  } 19 20}

使用Eclipse RCP进行桌面程序开发(三):视图和透视图(6)

时间:2011-04-13 海边沫沫

下面,创建模型类PersonModel.java,在构造函数中我们向List中填入了几个初始化数据 :

1package cn.blogjava.youxia.views; 2import java.util.ArrayList; 3 4public class PersonModel { 5 6  private ArrayList<Person> list = new ArrayList<Person>(); 7 8  public interface Listener{ 9    public void add(Person p); 10    public void

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号