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

GEF中一个模型的多层图的问题

    博客分类:
  • GEF
 
阅读更多

一般来说,我们在做GEF的时候,通常是一个模型对应一个图,这个图例如就是简单的通过继承Figure得来的。

 

也有可能我们需要的图比较复杂,需要通过多个图的组合来得到一个模型的图。举个最简单的使用:

 

假如我们希望模型A的图是这个样子:有一个title区域和一个body区域,其中body区域是可以滚动的,如下:

 

figure 1

 

那么简单的,可以有一个大图,大图的clientArea区域是一个ScrollPane,然后在ScrollPane里就是body的内容。

 

假设A对应的图是A_Figure,它的body是A_BodyFigure;A对应的EditPart是A_EditPart,那么在A_EditPart的getFigure()方法里,应该返回的是A_Figure。

 

但是实际上剩下的操作都是在A_BodyFigure上进行,例如,这些<unnamed>子图是加在A_BodyFigure上的。

 

所以此时需要重写EditPart的另一个方法:

public IFigure getContentPane()

 

这个方法返回用来添加子图形的图形。默认情况下就是返回getFigure()方法:

 

/**
 * If the children's Figures should be 
 * @see GraphicalEditPart#getContentPane()
 */
public IFigure getContentPane() {
	return getFigure();
}

 

所以如果要得到A_BodyFigure,大致可以如下实现:

 

	@Override
	public IFigure getContentPane() {
		ScrollPane child = (ScrollPane) getFigure().getChildren().get(0);
		A_BodyFigure contents = (A_BodyFigure)child.getContents();
		return contents;
	}

 

然后剩下要做的就是谨慎区分什么时候调用getFigure()方法,什么时候调用getContentPane()方法。

 

  • 大小: 4.3 KB
分享到:
评论

相关推荐

    一个GEF绘图的简单例子

    GEF(Graphical Editing Framework)是Eclipse平台下的一个开源图形编辑框架,用于构建可视化的图形编辑工具。它提供了一套完整的架构和库,使得开发者能够快速、灵活地创建出复杂的图形用户界面,特别适合于开发...

    GEF中文教程+代码

    - **Step 1-3**:基础概念和环境设置,讲解如何创建第一个GEF编辑器,包括模型定义、EditPart实现以及与Eclipse IDE的集成。 - **Step 4-5**:深入探讨模型-视图映射,包括图形元素的布局和连接线的绘制。 - **Step ...

    一个GEF的简单例子

    在提供的"GEFApp"压缩包中,包含了一个基于GEF的简单应用实例。这个应用可能展示了一个基本的图形编辑环境,用户可能可以创建、移动和删除图形元素,以及通过连线连接不同的元素。源代码分析可以帮助我们理解GEF的...

    GEF入门学习资料,简单地介绍了GEF使用过程中用到的基本类和函数的用法

    有一个非常不错的例子可以帮助我们学习 GEF,这个例子包括六个项目,每一个项目都是在前一个项目的基础上增加一些功能的。这个例子可以帮助我们了解 GEF 的典型功能,如 DirectEdit、Palette 等等。 在学习 GEF 的...

    GEF入门学习例子

    3. **编辑器(Editor)**: 编辑器是Eclipse插件开发中的一个关键组件,它提供了对模型的编辑功能。GEF编辑器通常基于`AbstractGraphicalEditor`类,可以集成到Eclipse IDE中。 4. **指挥者(Commander)**: 指挥者处理...

    GEF 入门版中文教程 源码

    总结来说,"GEF入门版中文教程 源码"是一个面向初学者的宝贵资源,它涵盖了GEF的主要概念和技术,结合源码实践,可以帮助开发者快速掌握图形化编辑器的开发技术,并为后续的RCP应用开发打下坚实基础。无论你是希望...

    GEF的动态变化二

    在描述中提到了一个博客链接,虽然内容没有给出,但我们可以推测博主可能在文章中详细解释了如何利用GEF进行图形动画或动态更新。在图形编辑器中,这可能包括元素的移动、旋转、缩放、添加和删除等操作,这些都需要...

    Eclipse的GEF学习

    总之,GEF是Eclipse平台上一个强大而灵活的图形编辑框架,它通过清晰的MVC架构分离了数据、控制和展示三个层面,为开发者提供了一个高效构建图形编辑应用的平台。无论是初学者还是经验丰富的开发者,掌握GEF都将为...

    GEF入门实例代码2《Eclipse插件开发》中实例

    总之,通过这个"GEF入门实例代码2",开发者可以了解到如何在Eclipse中构建一个基于GEF的图形编辑器,这不仅涉及数据模型的设计,还包括视图的绘制、用户交互的处理以及可撤销/重做机制的实现。通过实践,开发者可以...

    Eclipse开发使用GEF和EMF(IBM 红皮书)中英文对照版

    《Eclipse开发使用GEF和EMF》是IBM红皮书系列中的一部经典著作,主要探讨了如何在Eclipse环境中利用GEF(图形编辑框架)和EMF( Eclipse模型框架)进行图形化应用程序的开发。这两项技术是Eclipse平台上的核心组件,...

    自己下的GEF资源打包

    标题中的“GEF资源打包”指的是一个集合了关于GEF(Graph Edit Framework)的各种学习资料的压缩文件。这个资源包可能包含了对理解、学习和使用GEF非常有帮助的材料。描述进一步说明了这个包中包含的具体内容,如...

    GEF中文帮助实例

    GEF(Graphical Editing Framework)是Eclipse平台中的一个组件,主要用于创建图形化的编辑器。它提供了一套完整的框架,用于构建可扩展的、交互式的图形编辑应用程序,特别是针对那些需要可视表示的数据模型。GEF为...

    java gef开发实例

    在本实例中,我们将探讨如何利用GEF实现一个简单的MVC(Model-View-Controller)架构,这是一种常见的软件设计模式,用于分离应用程序的数据、显示逻辑和用户交互。 1. **GEF框架基础**: - **模型(Model)**:...

    GEF入门必读 GEF入门系列 GEF-whole-upload

    在Java编程中,GEF是一个非常有价值的工具,因为它简化了图形界面的开发过程,使开发者可以专注于业务逻辑而不是底层的图形绘制。 **Eclipse** 是一个开源的集成开发环境(IDE),它支持多种编程语言,包括Java、...

    GEF教程和demo源码

    在本教程中,我们将深入理解GEF的基本概念,并通过提供的"gef入门.pdf"文档和"test.gef.hello"源码,一步步学习如何构建一个简单的Hello World应用。 首先,让我们来看看"gef入门.pdf"文档中的关键知识点: 1. **...

    eclipse gef ve gmf

    GEF是一个用于构建图形用户界面的框架,特别是为创建基于图的编辑器提供支持。它提供了基础的绘图功能,包括图形元素的创建、布局、选择、连接和拖放等操作。GEF允许开发者定义自己的模型,并通过模型驱动的方式来...

    GEF 可用的6个demo

    **GEF(Graphical Editing Framework)** 是一个用于构建图形化编辑器的开源框架,它由Eclipse项目提供,主要用于创建复杂、可定制的图形用户界面(GUI)。GEF为开发人员提供了丰富的工具和API,使得创建具有拖放...

    GEF Example Source Code

    描述中的"GEF Example Source Code"进一步强调了这是一个专注于GEF实际应用的代码资源,可能是为了教学目的或帮助开发者快速上手。通过查看和分析这些示例代码,开发者可以学习到如何处理图形绘制、交互操作、模型...

    gef 转折线的相关方法实现和 GEF的API chm 格式

    - `org.eclipse.gef.EditPart`:这是GEF的核心组件,它代表了图形模型中的一个元素,并负责将其映射到视图中。 - `org.eclipse.gef.GraphicalEditPart`:是EditPart的一个子类,专门处理图形元素的绘制和交互。 - `...

Global site tag (gtag.js) - Google Analytics