`
mozhenghua
  • 浏览: 324548 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

jface treeViewer 使用说明

阅读更多

这里两天一直在学习eclipse的RCP plugin开发的使用技巧,想用eclipe的插件来实现我之前利用ibator改造的dao生成工具。

看了两天先把 extension的 view看得有点感觉了,这里我先把jface的 treeViewer这个控件说明一下,如何在eclipse的view里面显示一个树状结构的目录树。

 

<extension
         point="org.eclipse.ui.views">
      <category
            name="Sample Category"
            id="test3plugin">
      </category>
           <view
            category="test3plugin"
            class="test3plugin.ViewPartTest"
            icon="icons/alias.gif"
            id="test3plugin.view1"
            name="test3plugin.ViewPartTest"
            restorable="true">
      </view>
      
   </extension>

 

 先在plugin.xml文件中声明一个org.eclipse.ui.views的扩展,这个很简单没有什么好说的了。

然后是创建 test3plugin.ViewPartTest类:

 

import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.ui.JavaElementLabelProvider;
import org.eclipse.jdt.ui.StandardJavaElementContentProvider;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.ITreeViewerListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreeExpansionEvent;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;

public class ViewPartTest extends ViewPart {

	public ViewPartTest() {
	}

	@Override
	public void createPartControl(Composite parent) {

		TreeViewer viewer = new TreeViewer(parent);
		// Provide members of a compilation unit or class file
		ITreeContentProvider contentProvider = new StandardJavaElementContentProvider(
				true);
		viewer.setContentProvider(contentProvider);
		// There are more flags defined in class JavaElementLabelProvider
		ILabelProvider labelProvider = new JavaElementLabelProvider(
				JavaElementLabelProvider.SHOW_DEFAULT
						| JavaElementLabelProvider.SHOW_QUALIFIED
						| JavaElementLabelProvider.SHOW_ROOT);
		viewer.setLabelProvider(labelProvider);
		// Using the Java model as the viewers input present Java projects on
		// the first level.
		viewer.setInput(JavaCore.create(ResourcesPlugin.getWorkspace()
				.getRoot()));

		viewer.addSelectionChangedListener(new ISelectionChangedListener() {

			@Override
			public void selectionChanged(SelectionChangedEvent event) {

				System.out.println(event.getSource().toString());

			}

		});

		viewer.addTreeListener(new ITreeViewerListener() {

			@Override
			public void treeCollapsed(TreeExpansionEvent event) {
				System.out.println("treeCollapsed:"
						+ event.getElement().toString());
			}

			@Override
			public void treeExpanded(TreeExpansionEvent event) {
				System.out.println("treeExpanded:"
						+ event.getElement().toString());
			}
		});

	}

	@Override
	public void setFocus() {
	}
 

 

这里最关键的是三个方法:

 

  1. setContentProvider
  2. setLabelProvider
  3. setInput
经过查看源代码之后,明白了这个三个方法的意思是这样的:
  1. setContentProvider 提供页面上树节点内容的提供内容,设置IContentProvider类型的对象
  2. setLabelProvider 因为在每个树节点上要显示有图片和现实文字,所以设置IBaseLabelProvider类型的对象
  3. setInput 设置目录树的根节点, 注意这个方法设置的root对象在应用目录显示树上是不现实的。
另外还有两个事件监听接口:
  1. addSelectionChangedListener 当鼠标在树节点上焦点移动之后就会触发这个方法
  2. addTreeListener 这个回调接口的方法是在鼠标双击了树的枝或者叶之后,打开或者关闭节点触发的
值得一提的是以上这几个方法都是用了策略模式来隔离变化。这样可以通过这套代码实现各种复杂的业务需求
分享到:
评论

相关推荐

    SWT TreeViewer实例

    TreeViewer是SWT中的一个类,它封装了JFace Data Binding的支持,使得我们能够更方便地绑定数据到树形控件上。通过TreeViewer,我们可以创建具有多级节点、可选中状态、以及自定义列的树结构。 在`MyTreeViewer....

    JFace一些资料

    1. **《Eclipse SWT/JFace 开发实战精解》**:这本书深入介绍了如何使用SWT和JFace进行Eclipse插件开发,包含丰富的实例和实践指导。 2. **《SWT-JFace-3.4-zh-CN.chm》**:这是一份中文手册,详细讲解了SWT和...

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

    3. 表格和树视图:如何使用TableViewer和TreeViewer来展示和操作结构化数据。 4. 模型-视图-控制器(MVC):解释MVC模式如何帮助保持代码的清晰性和可扩展性。 5. 对话框(Dialogs):介绍如何使用JFace提供的标准...

    jface treeView 的sample

    在这个名为“jface treeView 的sample”的例子中,我们将深入探讨如何使用jFace来实现一个功能完备的TreeView。 首先,让我们了解`TreeView`的基本用法。在jFace中,`TreeView`是通过`org.eclipse.jface.viewers....

    org.eclipse.jface.rar

    1. **Viewers**:JFace提供了一种模型-视图-控制器(MVC)的实现,用于构建可定制的数据查看器,如TreeViewer和TableViewer。它们允许开发者以树形或表格形式展示数据,并提供了丰富的操作,如排序、过滤和编辑。 2...

    SWT/JFace从入门到精通

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

    全面介绍SWT-JFace

    在"Oreilly.SWT.A.Developers.Notebook.Oct.2004.eBook-LiB.chm"这本书中,读者可以深入学习SWT和JFace的使用方法,包括控件的创建、事件处理、布局管理、数据模型的构建、对话框的使用,以及如何在Eclipse插件开发...

    swt/jface api帮助文档

    JFace的TableViewer和TreeViewer提供了一种更抽象的方式来操作这些组件,包括数据绑定和排序。 7. **JFace服务**:包括Dialog、WorkbenchWindow、Action、SelectionService等,它们简化了窗口、动作和选择事件的...

    JFace-TableTree的若干问题.doc

    在Java编程环境中,JFace库是Eclipse RCP(Rich Client Platform)的一部分,它提供了一套高级用户界面组件,如TableViewer和TreeViewer,用于构建桌面应用程序。在文档标题和描述中提到的问题主要涉及到JFace中的...

    jface 入门例子

    2. **Viewer Framework**:JFace的`TableViewer`和`TreeViewer`提供了强大的表格和树形视图管理,支持数据模型、过滤、排序等功能。例如,创建一个表格展示数据: ```java Table table = new Table(shell, SWT....

    SWT/JFACE API

    5. **树和表控件**:JFace的`TreeViewer`和`TableViewer`提供了更高级别的抽象,用于展示和操作树形和表格数据,支持过滤、排序和拖放等功能。 6. **命令框架**:JFace的命令框架允许开发者定义和执行可扩展的用户...

    RCP jface 数据绑定 例子和测试范例

    在"RCP jface 数据绑定 例子和测试范例"中,这个文件可能包含了一个使用数据绑定技术的`TreeViewer`示例。 5. **数据绑定API**: JFace的数据绑定API包括`Bindings`, `ValueProviders`, `Listeners`等,它们一起...

    JFace的源码,从官网下的

    总之,深入研究JFace的源码不仅可以帮助我们更好地使用这个库,还能提升我们的GUI编程技能,尤其是在Eclipse平台上的开发。对于想要提升自己的Eclipse插件开发能力的开发者而言,这是一个不容错过的学习资源。

    SWT+JFace 源代码

    3. **表和树的视图**:JFace的TableViewer和TreeViewer类提供了丰富的表格和树形视图功能,支持排序、过滤和自定义列。 4. **对话框和页面**:JFace简化了创建各种对话框和向导页的过程,例如InputDialog、...

    org.eclipse.jface.snippets

    5. **表和树视图**:JFace的`TableViewer`和`TreeViewer`是用于展示数据的强大工具。它们支持各种操作,如排序、过滤、选择和编辑。在`org.eclipse.jface.snippets`中,你可以找到关于如何使用这些视图的实例代码。 ...

    hypersnap

    2. JFace库:理解其设计理念,以及如何创建和使用TreeViewer。 3. SWT(Standard Widget Toolkit):JFace的基础,提供了与操作系统交互的底层组件。 4. JFace Data Binding:可能涉及到的数据绑定,用于自动同步UI...

    SWT/Jface API 3.4

    在 JFace 中,TableViewer 和 TreeViewer 扩展了这些功能,添加了数据绑定和自定义列渲染等功能。 8. **Layout Managers**:SWT 提供了多种布局管理器,如 FillLayout、GridLayout、FormLayout 等,用于控制组件在...

    JFace-viewer

    在Java开发领域,特别是使用Eclipse RCP(Rich Client Platform)进行桌面应用开发时,JFace是不可或缺的一部分。JFace是SWT(Standard Widget Toolkit)的一个扩展,提供了更高级别的抽象层,简化了用户界面的构建...

    SWT/JFace 3.5 API (CHM)

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

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

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

Global site tag (gtag.js) - Google Analytics