`
nuoda
  • 浏览: 50681 次
  • 来自: 深圳
社区版块
存档分类
最新评论

利用GEF制作表格系统(视图设计)

阅读更多

视图设计

表格视图设计

在编辑器中调色板中,选择表格,拖入编辑器,系统默认显示一个方框的思路,来规划表格的显示图形。由于表格中有很多子元素,所以设置显示图形时,必须考虑子元素的显示位置和子元素的布局管理。

public class TableFigure extends Figure{

      private TableNode model;

      private Figure childPanel;

     

      public TableFigure(TableNode node){

             super();

            

             this.model=node;

            

             init();

            

      }

      public void init(){

             childPanel=new Figure(){

            protected void paintFigure(Graphics g){

                   super.paintFigure(g);

                  

            }

            public Dimension getPreferredSize(int wHint,int hHint){

                   Dimension dimension = super.getPreferredSize(wHint, hHint);

 

                int w = Math.max(dimension.width, 200);

                int h = Math.max(dimension.height, 200);

 

                return new Dimension(w, h);

            }

        };

        if(model.getBgColor() != null){

            childPanel.setBackgroundColor(model.getBgColor());

        }

       

        ToolbarLayout stepLayout = new ToolbarLayout();

 

        stepLayout.setVertical(true);

 

        this.setBorder(new MarginBorder(1, 1, 1, 1));

        this.setLayoutManager(stepLayout);

       

        //设置表格

       

        GridLayout grid=model.getGrid();

        if(grid==null){

            grid=new GridLayout();

        }

       

        childPanel.setLayoutManager(grid);

        this.add(childPanel);

        this.setOpaque(true);

      }

       public void paintFigure(Graphics graphics) {

              super.paintFigure(graphics);

              if(model.isBorder()){

                    Rectangle rect=getBounds();

                   

                    graphics.setForegroundColor(new Color(null, 0, 0, 255));

                      graphics.drawRectangle(new Rectangle(rect.x,rect.y,rect.width-1,rect.height-1));

              }

             

              

      }

      public Figure getContainerFigure() {

        

        return this.childPanel;

    }

      public void setModel(TableNode node){

             this.model=node;

             this.repaint();

            

      }

 

}

 

单元格视图

单元格视图相对比较简单,就显示一个方框。

 

public class CellFigure extends Figure{

      private CellNode model;

      private Figure childPanel;

     

      public CellFigure(CellNode node){

             super();

            

             this.model=node;

            

             init();

            

      }

      public void init(){

             childPanel=new Figure(){

            protected void paintFigure(Graphics g){

                   super.paintFigure(g);

                  

            }

        };

        if(model.getBgColor() != null){

            childPanel.setBackgroundColor(model.getBgColor());

        }

       

        ToolbarLayout stepLayout = new ToolbarLayout();

        //stepLayout.setSpacing(4);

        stepLayout.setVertical(true);

        //this.setBorder(new MarginBorder(8, 8, 8, 8));

        this.setBorder(new MarginBorder(1, 1, 1, 1));

        this.setLayoutManager(stepLayout);

       

        //设置表格

       

        GridLayout grid=new GridLayout();

       

        childPanel.setLayoutManager(grid);

   

        this.add(childPanel);

        this.setOpaque(true);

      }

      public void setModel(CellNode node){

             this.model=node;

             this.repaint();

            

      }

 

}

其它视图

画布采用XYLayout布局,直接在控制器中设置就可以了。

行、列做为逻辑层,不需要设计视图。

 

至此,视图已经设计完成了。

分享到:
评论

相关推荐

    基于GEF框架的SVG制作工具设计与实现

    本文旨在利用Eclipse平台上的GEF(Graphic Editor Framework)框架,设计并实现一个SVG的可视化制作工具,以解决SVG源码编辑的问题。GEF是一种用于构建图形编辑器的强大的框架,它基于Model-View-Controller(MVC)...

    RCP 视图显示GEF图

    用视图显示在GEF编辑器编辑好的图形 在视图里加入GraphicalViewer viewer = new ScrollingGraphicalViewer(); viewer.createControl(parent);

    界面设计GEF应用实例

    1. **模型-视图-控制器(MVC)**:GEF基于MVC设计模式,模型存储图形数据,视图负责显示,控制器处理用户交互。 2. **编辑领域(EditPart)**:编辑领域是GEF中的核心组件,它将模型与视图关联起来,处理用户交互和...

    GEF-ALL-3.4.2(1).zip

    GEF提供了多种视图类型,如树视图、表格视图和图形视图。 3. **EditPart**:编辑部分是视图和模型之间的桥梁,将模型的变化反映到视图上,同时处理用户的输入事件。每个图形元素都有一个对应的EditPart。 4. **...

    Eclipse的GEF学习

    GEF遵循经典的MVC(Model-View-Control)架构,这一设计模式使得模型、视图和控制器各司其职,减少了各组件间的耦合度,提高了系统的可维护性和灵活性。 #### 二、GEF的关键组件解析 1. **模型(Model)**:模型是...

    java gef开发实例

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

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

    GEF是Eclipse生态系统的一部分,利用Eclipse的插件体系,开发者可以通过编写插件来扩展其功能,创建定制化的图形编辑器。 **插件开发** 在Eclipse中至关重要,因为它是实现功能扩展的主要方式。GEF插件开发涉及创建...

    [翻译]Eclipse图形化编辑框架(GEF)/更新第7章:层和视图

    这有助于开发者在实际开发中更好地利用GEF框架。 **总结** Eclipse图形化编辑框架(GEF)通过层和视图的机制,提供了强大的图形编辑工具构建能力。层的管理使得元素的绘制和交互更加灵活,而视图则提供了展示模型...

    GEF-SDK-3.3.1.zip

    7. **扩展点和插件系统**:Eclipse的插件系统使得GEF可以无缝集成到Eclipse环境中,开发者可以利用Eclipse的扩展点来定制和扩展编辑器。 8. **样例和教程**:GEF SDK通常会包含一些示例项目和详细的开发教程,帮助...

    GEF Example Source Code

    GEF主要应用于领域包括模型驱动工程(MDE)、软件建模、流程图和系统设计等。 标题"GEF Example Source Code"表明这是一个关于GEF框架的示例源代码集合,它可能包含各种演示如何使用GEF构建图形编辑功能的代码实例...

    简单gef框架

    此外,gef的插件系统也可能提供了特定于流程设计的工具或功能。 6. **工作流实例(workflow1)**:在提供的压缩包文件"workflow1"中,可能包含了使用gef进行流程设计的一个具体示例。这可能是一个简单的脚本或项目...

    GEF入门学习例子

    这个入门学习例子旨在帮助初学者理解GEF的基本用法和核心概念,通过实例展示如何利用GEF实现工具栏、菜单栏、属性栏以及图形的交互功能,如移动、删除、撤销、连线等,并涵盖了大纲视图和鹰眼功能的实现。...

    GEF_Demo_Code20170307

    这个项目旨在演示如何利用GEF进行图形界面开发,并且特别关注了通过适配器(Adapter)扩展点来实现属性页配置以及在非Editor的ViewPart中使用GEF。 GEF是Eclipse平台下的一个开源库,专门用于构建可自定义的、图形...

    GEF_Tutorial.rar(GEF开发指南)

    你需要定义视图类,继承自GEF提供的基础视图类,并实现所需的绘图和事件处理逻辑。控制器则负责协调模型和视图的变化。 **6. 连接器和连接线** 在许多图形编辑器中,元素之间需要通过连接线进行关联。GEF提供了连接...

    GEF学习资料.zip

    它为开发者提供了一套全面的工具,用于创建复杂的图形用户界面,特别适用于创建数据建模、流程设计、系统架构等领域的可视化编辑器。GEF主要基于SWT/JFace技术,提供了丰富的图形绘制、事件处理、模型与视图同步等...

    GEF-SDK-3.7.0

    **应用实例**:GEF常用于软件建模、系统架构设计、流程图绘制等领域。例如,UML建模工具、电路设计工具等都可以通过GEF实现其图形化界面。 总之,GEF-SDK-3.7.0是Eclipse平台上开发图形编辑器的强大工具,它提供了...

    GEF教程及demo源码GEF_RCP_DEMO.zip

    学习如何利用Eclipse的调试工具进行GEF应用的调试,以及编写测试用例验证功能的正确性。 10. **扩展性与可定制性** GEF的开放性和模块化设计使其具有高度的可扩展性和可定制性。开发者可以根据需求添加新的模型...

    GEF入门系列

    - **模型-视图-控制器(MVC)**:GEF基于经典的MVC设计模式,其中模型负责存储数据,视图负责显示数据,而控制器则处理用户交互。 - **编辑领域(EditPart)**:编辑领域是GEF中的核心组件,它将模型与视图关联...

    GEF 入门操作

    其设计目标之一是降低模型和视图之间的耦合度,允许灵活选择不同的模型和视图组合。 在GEF中,模型和视图是独立的实体,它们之间的通信通过控制器进行。这种设计减少了模型与视图间的直接联系,但也意味着控制器...

Global site tag (gtag.js) - Google Analytics