`

连线上加文字

    博客分类:
  • GEF
 
阅读更多
前面写了个连线上显示文字,直接用的label,那样确实简单,但有的时候还是需要独立出来,这个时候就要有单独的控制器,原理很简单:即文字是连线的子节点,然后将文字添加到连线上面,就OK了;实现父子关系很简单:在连线控制器中添加getChildren方法就OK了,然后将文字绑定到连线上面就是刷新的时候确定连线的上的坐标然后绑定Label就可以了,直接上代码:
protected void refreshVisuals() {
		// String text = getLabelWrapper().getText();
		Label label = (Label) getFigure();
		String text = label.getText();
		if (text == null || text.equals("")) {
			text = ((LabelModel) getModel()).getText();
		}
		//
		Polyline polyline = (Polyline) ((CustomAbstractConnectionEditPart) getParent()).getConnectionFigure();
		Point location = ((LabelModel) getModel()).getLocation();
		if (location == null) {
			location = calculateInitialLocation(polyline, text);
			((LabelModel) getModel()).setLocation(location);
		}
		label.setText(text);
		LabelConstraint constraint = new LabelConstraint(text, location, polyline);
		((GraphicalEditPart) getParent()).setLayoutConstraint(this, getFigure(), constraint);
	}
	private Point calculateInitialLocation(Polyline polyline, String text) {
		Dimension textDimension = FigureUtilities.getTextExtents(text, figure.getFont());
		return new Point(-(textDimension.width + 5), -(textDimension.height + 5));
	}private class LabelConstraint implements Locator {
		String text;
		Point relativeLocation;
		Polyline polyline;

		public LabelConstraint(String text, Point location, Polyline polyline) {
			this.text = text;
			this.relativeLocation = location;
			this.polyline = polyline;
		}
		public void relocate(IFigure figure) {
			Dimension minimum = FigureUtilities.getTextExtents(text, figure.getFont());
			figure.setSize(minimum);
			Point midPoint = polyline.getPoints().getMidpoint();
			Point newLocation = relativeLocation.getCopy();
			newLocation.translate(midPoint);
			figure.setLocation(newLocation);
		}
	}
1
0
分享到:
评论

相关推荐

    文字连线题模板

    1. **操作说明.doc**:这是一个文档文件,很可能包含了如何使用文字连线题模板的详细步骤和指导,包括如何创建题目、设置选项、以及如何在课堂上进行互动教学等。 2. **18文字连线题游戏-多媒体交互式辅助教学课件...

    Android 连线题,支传图片和文字,简单实用,可做为答题app的连线模块使用

    连线题通常包含图片、文字以及连线的起点和终点,所以可能需要自定义View或者使用ImageView、TextView等标准控件组合实现。 2. **触摸事件处理**:通过重写View的onTouchEvent()方法,捕获用户的触摸操作,以此来...

    html5做连线题

    在Canvas上,我们可以利用其提供的API方法进行图形绘制,包括直线、曲线、文字、图像等。要实现连线题,首先需要在HTML中创建一个canvas元素,并通过JavaScript获取到它的2D渲染上下文。 以下是一个简单的步骤来...

    在线考试连线题 js demo

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

    canvas实现js、html连线

    在网页开发中,Canvas是一个非常重要的元素,它...这是一个矩形区域,可以用于绘制2D图形,如线条、形状、文字等。在HTML文档中,我们可以创建一个`<canvas>`元素,并为其指定一个ID以便于JavaScript访问: ```html ...

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

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

    CASS展点框选连线

    在提供的压缩包文件中,"文字连线.fas"很可能是一个CASS的脚本文件。这种文件通常包含了一系列的CASS命令,用于自动化执行特定的任务,比如批量展点、连线等。通过运行这个脚本,用户可以快速地完成指定的操作,...

    svg.js和jquery实现连线功能

    总结起来,这个示例展示了如何使用SVG.js和jQuery在HTML页面上实现用户交互的连线功能。SVG.js提供了操作SVG图形的强大工具,而jQuery简化了JavaScript代码的编写。通过结合这两个库,开发者可以创建出富有动态和...

    连线涂色图字母、数字.doc

    很抱歉,根据您提供的信息,"连线涂色图字母、数字.doc"似乎是一个教育或儿童学习资源,包含字母和数字的连线与涂色活动。在这样的文档中,通常会有各种字母和数字的图像,孩子们需要按照指示将它们连接起来,并在...

    百度地图显示多点连线+数字标注

    标题中的“百度地图显示多点连线+数字标注”是指在百度地图API的应用中,通过编程方式将多个地理位置点连接起来,并在每个点上添加数字标注,以实现地图上的复杂信息展示。这种技术常用于路径规划、地理数据分析或者...

    ef.zip_auto cad_cad_lisp_文字连线 cad

    总的来说,这个压缩包提供的是一种优化Auto CAD文字连线体验的工具,通过AutoLISP编程实现了批量连线的自动化,旨在提升设计效率和用户体验。用户需要对Auto CAD和AutoLISP有一定的了解,以便正确安装和使用这个程序...

    activiti 5.22流程图连线名称不显示bug修复

    然而,在实际使用过程中,可能会遇到各种问题,其中之一就是在Activiti 5.22版本中出现的“流程图连线名称不显示”的bug。 该问题主要体现在使用Activiti的Modeler设计器时,用户在设计流程图时可以清晰地看到连线...

    教育类的连线题Demo

    在实际应用中,连线题可能需要支持多种数据类型,如文字、图片甚至音频。对于多类型数据的处理,我们可以利用面向对象编程,创建不同的类来表示不同类型的题目和答案,每个类包含特定的显示和处理逻辑。例如,对于...

    制作flash课件的连线题

    在场景中,选择 tiger 文字答案上的按钮,在动作面板中输入: on (release) { with (_root.t1) { gotoAndStop(1); } if (_root.t1.tu == "tiger") { with(_root.bb) { gotoAndplay(2); _root.f1 = Number(20); _root...

    易语言连线游戏源码.zip

    《易语言连线游戏源码分析与学习指南》 在当今的数字时代,游戏开发成为了一个热门领域,而易语言作为一款国内自主研发的编程语言,以其简单易学的特点,深受初学者和业余爱好者的喜爱。本篇文章将围绕"易语言连线...

    连线题Canvas

    3. 文本渲染:`fillText()`和`strokeText()`用于在Canvas上添加文字。 4. 图像处理:`drawImage()`函数可以将图像加载到Canvas并进行绘制和操作。 在【连线题Canvas】插件中,开发者可以利用这些功能创建出具有以下...

    kx三种基础里连线图

    从整体上看,KX技术的三种基础里连线图不仅为音频工程师和音乐制作人提供了学习和操作上的帮助,而且对提升音频处理质量有着实际的指导意义。通过这些图示,用户可以更好地了解KX系统的内部运作机制,从而在实际应用...

    创新声卡调试KX连线图

    ### 创新声卡调试与KX连线图详解 #### 一、KX数字信号处理器简介及基础操作 KX数字信号处理器(Digital Signal Processor, DSP)是一种专门用于处理音频信号的专业工具,常用于创新声卡等设备的调试中。通过合理的...

Global site tag (gtag.js) - Google Analytics