`

ShortestPathConnectionRouter使用的例子

 
阅读更多
public class Connection {
	
	static String layer1 = "layer1";
	static String layer2 = "layer2";
	
	public static void main(String args[]) {
		Shell shell = new Shell();
		shell.setSize(350, 350);
		shell.open();
		shell.setText("Connection Demo");
		LightweightSystem lws = new LightweightSystem(shell);
		LayeredPane manager = new LayeredPane();
		lws.setContents(manager);
		
		IFigure panel = new Layer();
		panel.setOpaque(false);
		manager.add(panel, layer1, -1);

		IFigure conLayer = new Layer();
		conLayer.setOpaque(false);
		manager.add(conLayer, layer2, -1);

		
		RectangleFigure node1 = new RectangleFigure(), node2 = new RectangleFigure();
		node1.setBackgroundColor(ColorConstants.red);
		node1.setBounds(new Rectangle(30, 30, 64, 36));
		
		RectangleFigure node3 = new RectangleFigure();
		node3.setBounds(new Rectangle(100, 100, 64, 36));

		node2.setBackgroundColor(ColorConstants.blue);
		node2.setBounds(new Rectangle(200, 200, 64, 36));

		PolylineConnection conn = new PolylineConnection();
		conn.setSourceAnchor(new ChopboxAnchor(node1));
		conn.setTargetAnchor(new ChopboxAnchor(node2));
		conn.setTargetDecoration(new PolygonDecoration());
		
//		conn.setConnectionRouter(new ManhattanConnectionRouter());		
		
		conn.setConnectionRouter(new ShortestPathConnectionRouter(panel));

		Label label = new Label("Midpoint");
		label.setOpaque(true);
		label.setBackgroundColor(ColorConstants.buttonLightest);
		label.setBorder(new LineBorder());

		// 添加连线的Locator
		conn.add(label, new MidpointLocator(conn, 0));

		// 在底层Figure中添加子Figure
		panel.add(node1);
		panel.add(node2);
		panel.add(node3);
		conLayer.add(conn);
		new Dragger(node1);
		new Dragger(node2);
		new Dragger(node3);
		
		Display display = Display.getDefault();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
	}

	static class Dragger extends MouseMotionListener.Stub implements MouseListener{
		private Point last;

		public Dragger(IFigure figure){
			figure.addMouseMotionListener(this);
			figure.addMouseListener(this);
		}

		public void mouseDoubleClicked(MouseEvent e) {
		}

		public void mousePressed(MouseEvent e) {
			last = e.getLocation();
		}

		public void mouseReleased(MouseEvent e) {
		}

		public void mouseDragged(MouseEvent e) {
			Point p = e.getLocation();
			Dimension delta = p.getDifference(last);
			last = p;
			Figure f = (Figure) e.getSource();
			//设置拖动的Figure的位置
			f.setBounds(f.getBounds().getTranslated(delta.width,delta.height));
		}
	}
}

 

使用 ShortestPathConnectionRouter需要使用多层次。这个使用了两层,一层是放置的node,一层放置的是连线。

分享到:
评论

相关推荐

    野生动物与家畜多目标检测数据集.zip

    数据集介绍:野生动物与家畜多目标检测数据集 数据集名称:野生动物与家畜多目标检测数据集 数据规模: - 训练集:1,540张图片 - 验证集:377张图片 - 测试集:316张图片 分类类别: Brown-bear(棕熊)、Chicken(鸡)、Fox(狐狸)、Hedgehog(刺猬)、Horse(马)、Mouse(老鼠)、Sheep(绵羊)、Snake(蛇)、Turtle(龟)、Rabbit(兔)及通用object(物体)共11个类别 标注格式: YOLO格式标注,包含归一化坐标与类别索引,支持目标检测模型训练 数据特性: 涵盖航拍与地面视角,包含动物个体及群体场景,适用于复杂环境下的多目标识别 农业智能化管理: 通过检测家畜(鸡/马/绵羊等)数量及活动状态,辅助畜牧场自动化管理 生态监测系统: 支持野生动物(棕熊/狐狸/刺猬等)识别与追踪,用于自然保护区生物多样性研究 智能安防应用: 检测农场周边危险动物(蛇/狐狸),构建入侵预警系统 动物行为研究: 提供多物种共存场景数据,支持动物群体交互行为分析 高实用性标注体系: - 精细标注包含动物完整轮廓的边界框 - 特别区分野生动物与家畜类别,支持跨场景迁移学习 多维度覆盖: - 包含昼间/复杂背景/遮挡场景 - 涵盖陆地常见中小型动物与禽类 - 提供通用object类别适配扩展需求 工程适配性强: - 原生YOLO格式适配主流检测框架(YOLOv5/v7/v8等) - 验证集与测试集比例科学,支持可靠模型评估 生态价值突出: - 同步覆盖濒危物种(龟类)与常见物种 - 支持生物多样性保护与农业生产的双重应用场景

    语音识别功能:Vue3+WebSpeechAPI整合教程.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Vue 3是一款备受瞩目的JavaScript框架,它采用了基于Proxy的响应式系统,显著提升了性能和调试能力。其Composition API带来了更高效的逻辑组织方式,使代码复用变得轻而易举。Tree-shaking支持让打包后的文件体积更小,进一步优化了应用性能。Vue 3还与TypeScript深度集成,提供了更完善的类型推导,让开发过程更加顺畅。无论是构建大型应用还是小型项目,Vue 3都能凭借其出色的性能和灵活的架构,帮助开发者高效完成任务,是现代Web开发的理想选择。

    低代码平台开发:Vue3可视化拖拽的架构设计.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Vue 3是一款备受瞩目的JavaScript框架,它采用了基于Proxy的响应式系统,显著提升了性能和调试能力。其Composition API带来了更高效的逻辑组织方式,使代码复用变得轻而易举。Tree-shaking支持让打包后的文件体积更小,进一步优化了应用性能。Vue 3还与TypeScript深度集成,提供了更完善的类型推导,让开发过程更加顺畅。无论是构建大型应用还是小型项目,Vue 3都能凭借其出色的性能和灵活的架构,帮助开发者高效完成任务,是现代Web开发的理想选择。

    CSDN博客之星:技术分享盛宴助力交流与个人品牌成长

    文案: “CSDN博客之星”是技术博主展现实力与成长的顶级舞台!通过参与这一品牌活动,你不仅能提升个人影响力,还能链接行业精英,加速技术精进。本文揭秘往届获奖者的成功经验,分享高流量博客的创作技巧——从原创内容到粉丝互动,助你打造优质技术品牌,赢得更多机遇。无论你是新人还是资深博主,这里都是突破自我的起点!

    柴油–天然气–氢气三燃料化学反应机理研究.zip

    柴油–天然气–氢气三燃料化学反应机理研究.zip

    机器学习Python 实现TSO-ELM金枪鱼群优化算法优化极限学习机多输入单输出回归预测的详细项目实例(含模型描述及示例代码)

    内容概要:本文档详细介绍了Python实现TSO-ELM(金枪鱼群优化算法优化极限学习机)多输入单输出回归预测的项目实例。极限学习机(ELM)作为一种快速训练的前馈神经网络算法,虽然具有训练速度快、计算简单等优点,但也存在局部最优解和参数敏感性的问题。金枪鱼群优化算法(TSO)通过模拟金枪鱼群体觅食行为,具有较强的全局搜索能力。将TSO与ELM结合形成的TSO-ELM模型,可以优化ELM的输入层和隐藏层之间的权重,提高回归预测的准确性。项目包括数据预处理、TSO优化、ELM回归模型训练和预测输出四个主要步骤,并提供了详细的代码示例。; 适合人群:对机器学习、优化算法有一定了解的数据科学家、算法工程师和研究人员,特别是那些希望深入理解智能优化算法在回归预测任务中的应用的人群。; 使用场景及目标:① 提升ELM在多输入单输出回归预测中的性能,特别是在处理非线性问题时的预测精度;② 解决ELM中的局部最优解和参数敏感性问题;③ 优化ELM的隐层权重和偏置值,提高模型的表达能力和预测能力;④ 在金融、气象、能源、医疗、交通等领域提供更准确的预测模型。; 阅读建议:本文档不仅提供了理论解释,还包含详细的代码实现,建议读者在阅读过程中结合代码进行实践,理解TSO-ELM模型的工作原理,并尝试调整参数以优化预测效果。同时,读者应关注TSO算法在高维复杂问题中的应用挑战,思考如何改进优化策略。

    Vue3+Webjs:去中心化应用开发全指南.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Vue 3是一款备受瞩目的JavaScript框架,它采用了基于Proxy的响应式系统,显著提升了性能和调试能力。其Composition API带来了更高效的逻辑组织方式,使代码复用变得轻而易举。Tree-shaking支持让打包后的文件体积更小,进一步优化了应用性能。Vue 3还与TypeScript深度集成,提供了更完善的类型推导,让开发过程更加顺畅。无论是构建大型应用还是小型项目,Vue 3都能凭借其出色的性能和灵活的架构,帮助开发者高效完成任务,是现代Web开发的理想选择。

    服务端渲染进阶:Vue3SSR+Nuxt3性能优化全攻略.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Vue 3是一款备受瞩目的JavaScript框架,它采用了基于Proxy的响应式系统,显著提升了性能和调试能力。其Composition API带来了更高效的逻辑组织方式,使代码复用变得轻而易举。Tree-shaking支持让打包后的文件体积更小,进一步优化了应用性能。Vue 3还与TypeScript深度集成,提供了更完善的类型推导,让开发过程更加顺畅。无论是构建大型应用还是小型项目,Vue 3都能凭借其出色的性能和灵活的架构,帮助开发者高效完成任务,是现代Web开发的理想选择。

    10分钟掌握Vue3响应式系统:Proxy与Ref的深度对比.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Vue 3是一款备受瞩目的JavaScript框架,它采用了基于Proxy的响应式系统,显著提升了性能和调试能力。其Composition API带来了更高效的逻辑组织方式,使代码复用变得轻而易举。Tree-shaking支持让打包后的文件体积更小,进一步优化了应用性能。Vue 3还与TypeScript深度集成,提供了更完善的类型推导,让开发过程更加顺畅。无论是构建大型应用还是小型项目,Vue 3都能凭借其出色的性能和灵活的架构,帮助开发者高效完成任务,是现代Web开发的理想选择。

    交互式地图开发实战指南

    本书《Map Scripting 101》由Adam DuVander撰写,旨在为刚接触地图脚本开发的网页开发者提供实用的指导。书中介绍了如何使用Bing、Yahoo!和Google地图提供的API,通过73个示例脚本,教授读者如何构建交互式地图和混合应用。读者将学习如何创建基本地图、嵌入地图、设置缩放级别和边界、显示和过滤位置标记及信息气泡、根据访客位置定制地图、使用KML、GeoRSS和GPX等常见数据格式,以及在地图上创建图形覆盖层以更好地分析数据和趋势。此外,书中还指导如何利用Yelp、Upcoming等网站的公开地理数据以及美国政府的公共领域地理数据。本书适合任何想要开始进行地图脚本开发的网页开发者,无论你的兴趣是追踪全球地震还是仅仅标记都伯克的咖啡馆。

    【车辆控制】基于matlab遗传算法GA优化自适应PID自动驾驶汽车速度控制(LPV MPC)【含Matlab源码 13317期】.zip

    Matlab领域上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    Python脚本大全.zip

    Python脚本大全资源描述 资源概述 Python脚本大全是一个集合了多种实用Python脚本的资源包,旨在为开发者和爱好者提供一系列可以直接使用或作为学习参考的代码示例。这些脚本涵盖了从基础到高级的多种应用场景,包括数据处理、自动化任务、网络爬虫、数据分析、机器学习等。通过这些脚本,用户可以快速实现常见的编程任务,提高开发效率,同时也可以作为学习Python语言和相关技术的实践材料。 资源内容 1. **基础脚本**: - 文件操作:读取、写入、复制、移动文件和文件夹。 - 数据处理:处理CSV、JSON、Excel等常见数据格式。 - 系统工具:获取系统信息、执行系统命令、管理进程等。 2. **网络爬虫**: - 简单爬虫:抓取网页内容、提取特定数据。 - 数据抓取:从API获取数据、解析HTML和XML。 - 高级爬虫:使用Selenium、Scrapy等框架实现复杂爬虫任务。 3. **数据分析与可视化**: - 数据分析:使用Pandas、NumPy等库进行数据清洗、分析。 - 数据可视化:使用Matplotlib、Seaborn等库绘制图表。 - 数据报告:生成HTML、PDF等格式的报告。 4. **机器学习**: - 机器学习基础:线性回归、逻辑回归、决策树等。 - 深度学习:使用TensorFlow、Keras等框架实现神经网络。 - 实用案例:图像识别、自然语言处理、时间序列分析等。 5. **自动化任务**: - 定时任务:使用schedule、APScheduler等库实现定时任务。 - 批处理:批量处理文件、执行批量任务。 - GUI自动化:使用PyAutoGUI等库实现图形界面自动化操作。 6. **实用工具** 日志记录:使用logging模块记录日志

    【Three.js基础学习】36.particles-morphing-shader

    实现粒子运动切换效果 着色器的应用

    基于Matlab Simulink的四旋翼无人机GUI界面模拟仿真:飞行参数调整与动画展示

    内容概要:本文介绍了基于Matlab Simulink平台搭建的四旋翼无人机模拟系统,该系统拥有图形化用户界面(GUI),允许用户自定义无人机的各项参数并进行飞行模拟。用户可以通过修改如机臂长度、电机推力系数等关键参数,直观地观察到这些变化对飞行状态的影响。此外,文中还详细描述了仿真实验的具体操作流程以及一些有趣的实验现象,如改变参数导致的不同飞行轨迹和姿态表现。同时提到了内置的3D引擎用于生成逼真的飞行动画,特别是螺旋桨旋转效果的真实再现。 适合人群:对无人机控制系统感兴趣的研究人员和技术爱好者,尤其是那些希望通过模拟环境深入理解无人机动力学特性和控制机制的人群。 使用场景及目标:适用于教学演示、科研探索或者个人兴趣爱好等领域。主要目的是帮助使用者掌握无人机的基本工作原理,熟悉各种物理参数的作用及其相互关系,提高对于复杂系统的认知水平。 其他说明:文中提到的一些高级特性,如实时调参、故障注入等功能增加了系统的趣味性和实用性,为用户提供了一个更加全面的学习体验。

    语音合成方案:Vue3+WebSpeechAPI实现.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Vue 3是一款备受瞩目的JavaScript框架,它采用了基于Proxy的响应式系统,显著提升了性能和调试能力。其Composition API带来了更高效的逻辑组织方式,使代码复用变得轻而易举。Tree-shaking支持让打包后的文件体积更小,进一步优化了应用性能。Vue 3还与TypeScript深度集成,提供了更完善的类型推导,让开发过程更加顺畅。无论是构建大型应用还是小型项目,Vue 3都能凭借其出色的性能和灵活的架构,帮助开发者高效完成任务,是现代Web开发的理想选择。

    分类 (Classication):测试你的知识.pdf

    分类、阈值、混淆矩阵、准确率、召回率、精确率等教程和代码

    PHP黑白胶片图转彩图功能V2025.05.15

    传统照片底片是摄影过程中生成的反色图像,为了欣赏照片,需要通过冲印过程将底片转化为正像。而随着数字技术的发展,我们现在可以使用数字工具不仅将底片转为正像,还可以添加色彩,重现照片原本的色彩效果。

    手绘小树卡通素材教学课件模板.pptx

    手绘小树卡通素材教学课件模板

    基于滑膜控制的车队纵向控制仿真研究及其在Matlab与Carsim环境中的实现

    内容概要:本文详细介绍了利用滑膜控制算法在Matlab和Carsim环境下进行车队纵向控制仿真的方法和技术细节。首先,文中解释了滑膜控制器的工作原理,展示了核心代码并讨论了关键参数的选择对控制系统性能的影响。接着,描述了如何将滑膜控制器计算出的期望加速度转换为具体的节气门和制动力指令,以实现车辆的实际加速和减速。此外,还探讨了多车编队时遇到的问题以及相应的解决方案,如采用低通滤波减少首车扰动放大的影响。最后,提供了仿真效果的数据验证,证明了所提出的方法的有效性和鲁棒性。 适用人群:从事自动驾驶、智能交通系统研究的专业人士,特别是那些希望深入了解车队纵向控制机制的研究人员和技术开发者。 使用场景及目标:适用于需要模拟多个车辆组成的车队行为的研究项目,旨在提高车队行驶的安全性和效率。具体目标包括但不限于:掌握滑膜控制理论的应用技巧;学会构建和调整车队纵向控制模型;理解并解决多车编队过程中可能出现的技术难题。 其他说明:随附有详细的仿真教程、必要的软件安装包(Matlab R2021b 和 Carsim 8_1),以及用于实验的所有相关资料,便于读者快速上手实践。

    前端压测工具:Vue3性能监控的Chrome插件开发.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Vue 3是一款备受瞩目的JavaScript框架,它采用了基于Proxy的响应式系统,显著提升了性能和调试能力。其Composition API带来了更高效的逻辑组织方式,使代码复用变得轻而易举。Tree-shaking支持让打包后的文件体积更小,进一步优化了应用性能。Vue 3还与TypeScript深度集成,提供了更完善的类型推导,让开发过程更加顺畅。无论是构建大型应用还是小型项目,Vue 3都能凭借其出色的性能和灵活的架构,帮助开发者高效完成任务,是现代Web开发的理想选择。

Global site tag (gtag.js) - Google Analytics