`

让连线上的Label动起来吧

    博客分类:
  • GEF
阅读更多
大家都知道GEF中连线上的label默认是在线的中间,一旦要连很多线的时候显示label就是棘手的问题了,所以啊就要求可以移动label避免重叠啊
三个步骤
第一步:写个类继承MidpointLocator
             public class MidpointOffsetLocator extends MidpointLocator {
   private Point offset;
   
   public MidpointOffsetLocator(Connection c, int i) {
      super(c, i);
      offset = new Point(0, 0);
   }
   
   @Override
   protected Point getReferencePoint() {
      Point point = super.getReferencePoint();
      return point.getTranslated(offset);
   }

   public Point getOffset() {
      return offset;
   }
   
   public void setOffset(Point offset) {
      this.offset = offset;
   }
}

第二步:添加Label到connection
connection.add(conditionLabel, new MidpointOffsetLocator(connection, 0));

第三步:给Label添加事件
conditionLabel.addMouseListener(new MouseListener(){
			public void mouseDoubleClicked(MouseEvent me){
			}

			public void mousePressed(MouseEvent me){
				anchorX = me.x;
				anchorY = me.y;
				me.consume();
			}

			public void mouseReleased(MouseEvent me){
				me.consume();
			}
		});
		conditionLabel.addMouseMotionListener(new MouseMotionListener(){
			public void mouseDragged(MouseEvent me){
				dx += me.x - anchorX;
				dy += me.y - anchorY;
				anchorX = me.x;
				anchorY = me.y;
				Object constraint = connection.getLayoutManager().getConstraint(conditionLabel);
				if(constraint instanceof MidpointOffsetLocator){
					((MidpointOffsetLocator) constraint).setOffset(new Point(dx,dy));
					conditionLabel.revalidate();
				}
				me.consume();
			}

			@Override
			public void mouseEntered(MouseEvent me) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseExited(MouseEvent me) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseHover(MouseEvent me) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseMoved(MouseEvent me) {
				// TODO Auto-generated method stub
				
			}
		});

经过上面三个步骤就大功告成了
1
0
分享到:
评论
3 楼 扬手就是一长鞭 2015-04-06  
移动label也无法使得save可以执行。
2 楼 扬手就是一长鞭 2015-04-06  
我的save是正常的,我添加删除node或者connection时,都可以点击save
1 楼 扬手就是一长鞭 2015-04-06  
我也是这扥写的,可是我双击label改变他的文字时,发现save按钮是灰色的,对editor来说,并没有发生变化一样。请问你知道是什么原因吗?

相关推荐

    jtopo连线实现脉冲动画.rar

    jtopo本身的连线比较生硬,刻板,在项目中经常要求“动感”,博主在jtopo0.4.8的基础上通过自主绘制的方式,完美的实现了jtopo连线的脉冲动画效果,还附带了小实例,如果有不解的地方,欢迎大家留言,欢迎来打脸。

    Android 画布Canvas之连线动画Demo

    `Canvas`类提供了丰富的绘图方法,让我们能够在Bitmap或者Surface上绘制线条、形状、文本等元素。在这个"Android画布Canvas之连线动画Demo"中,我们将深入探讨如何利用Canvas实现动态的连线动画效果,包括控制动画...

    canvas特效-圆点运动连线

    同时,可以添加一些动画效果,让圆点在画布上随机移动,使得连线效果更加生动: ```javascript function drawConnections() { ctx.beginPath(); for (var i = 0; i ; i++) { for (var j = i + 1; j ; j++) { if...

    goole map动态连线 javaScript 异步调用C#

    首先,让我们了解动态连线在Google Map上的实现。动态连线通常指的是在地图上根据实时数据创建或更新的路线、轨迹或路径。这在物流跟踪、交通监控、地理信息系统(GIS)等场景中非常常见。使用JavaScript,我们可以...

    jsplumb实现表格字段连线_JsPlumb 动态_jsplumb_jsplumb.min.js_jsplumb拖拽生成

    JsPlumb是一个JavaScript库,主要用于在网页上创建和管理元素之间的连接或连线。它在UI设计,特别是数据可视化和流程图构建中非常有用。在这个场景中,`jsplumb`被用于实现表格字段之间的连线,这在数据库设计中非常...

    jtopo扩展,各种连线

    在这个“jtopo扩展,各种连线”的主题中,我们将深入探讨 `jtopo` 的核心特性,特别是关于连线的各种可能性。 首先,`jtopo` 的连线功能是其核心组件之一,允许用户在图形节点之间创建各种类型的连接。连线不仅可以...

    Unity连线插件Line

    总结起来,Unity连线插件Line是一款强大的工具,集成了2D和3D画线、物体运动轨迹模拟、路径编辑以及X光透视等多种功能,适用于各种类型的游戏开发。其易于学习和使用的特性使得无论是初学者还是经验丰富的开发者都能...

    canvas实现js、html连线

    此外,为了让连线具有更好的交互体验,我们可能还需要实现拖动时的选中效果、连线的橡皮擦功能、线条的宽度和颜色选择等。这通常涉及到更复杂的事件处理和状态管理。 至于HTML连线,这里的“HTML连线”可能指的是...

    高德地图将marker用连线连起来

    在使用高德地图进行开发时,我们经常需要在地图上展示一些特定的点,并且有时候这些点之间需要通过连线来表示某种关系或者路径。标题"高德地图将marker用连线连起来"所指的就是如何在高德地图API中实现这样的功能,...

    地图上绘制点和连线

    绘制连线,也称为路径(Paths),则需要将一系列经纬度点连接起来形成线条。这可以通过创建多边形(Polygon)或折线(Polyline)对象实现。对于折线,你需要提供一个包含所有点的数组,然后创建一个Polyline对象,...

    Unity LineRenderer 连线功能示例工程

    Unity中的LineRenderer组件是用于创建线形图形的工具,它在游戏开发中有着广泛的应用,如绘制路径、连线、粒子轨迹等。在这个“Unity LineRenderer 连线功能示例工程”中,我们可以深入理解如何利用LineRenderer实现...

    html5做连线题

    2. **JavaScript初始化**:在JavaScript中获取canvas元素的2D渲染上下文,并定义一些变量来存储连线题的数据,如题目、答案等。 ```javascript var canvas = document.getElementById('myCanvas'); var ctx = ...

    在线考试连线题 js demo

    在线考试连线题是一种常见的考核方式,它要求考生在指定的图形或文字之间建立正确的关联。在Web开发领域,实现这样的功能通常需要利用JavaScript、HTML5和ECMAScript等前端技术。本示例"在线考试连线题 js demo"显然...

    c#控件连线拖动

    总结起来,"c#控件连线拖动"涉及了C#中控件的动态创建、事件处理、图形绘制以及数据持久化等多个关键知识点,它提供了一种直观的方式来构建和可视化控件之间的关系。通过理解并实践这些技术,开发者可以创建出更富有...

    彻底解决jtopo连线重合的问题.rar

    或者引入层次结构,使得某些连线在视觉上位于其他连线之上或之下。 开发者可能通过以下几种技术手段来实现这一目标: 1. **路径规划算法优化**:使用更复杂的路径计算方法,例如A*搜索算法,寻找一条避开其他连线...

    H5+canvas+js实现连线题

    连线题是一种常见的认知测试形式,通常要求用户将两个相关的项目通过线条连接起来。在传统纸质测试中,这种题型可能需要用户用笔画线。而在数字化环境中,我们可以利用JavaScript和HTML5 Canvas来实现这一功能。...

    jsPlumb 强大的JavaScript连线库,它可以将html中的元素用箭头、曲线、直线等连接起来,适用于开发Web上的图表、建模工具等

    jsPlumb是一个强大的JavaScript连线库,它可以将html中的元素用箭头、曲线、直线等连接起来,适用于开发Web上的图表、建模工具等。它同时支持jQuery+jQuery UI、MooTools和YUI3这三个JavaScript框架,十分强大

    android 连线题 自定义view 实现

    本示例将探讨如何实现一个“连线题”功能,这是一个常见的互动式学习工具,用户可以通过绘制线条将不同项目连接起来。我们将从标题“android 连线题 自定义view 实现”和描述“Android 连线题 demo以 四个答案为例 ...

    kx连线图显示隐藏工具

    在实际应用中,KX连线图工具可以帮助业务分析师快速生成报告,让决策者更容易理解数据背后的故事。同时,对于研究人员来说,它也是探索数据模式和关系的有效工具。然而,为了更好地利用这款工具,用户需要掌握一定的...

    HTML5 Cavnas实现连线题特效

    总结起来,"HTML5 Canvas实现连线题特效"涵盖了Canvas的基本绘图操作、鼠标事件处理、动态图形绘制以及用户交互设计等多个方面,是一个综合性的Web开发实践案例。通过学习和实践这个主题,开发者不仅可以提升Canvas...

Global site tag (gtag.js) - Google Analytics