`

Draw2d 连线六 路由 Router

 
阅读更多

关键字:Draw2d 连线 路由 Router ManhattanConnectionRouter

 

NullConnectionRouter : 直接的直线连接。

FanRouter : 防治连线重叠的连接。

BendpointConnectionRouter : 允许用户任意拖动连线中的部分的方式增加节点。

ShortestPathConnectionRouter : 最短路径的连接。

ManhattanConnectionRouter : 都以垂直和水平的方式来连接,同时回避线条重叠。

 

ManhattanConnectionRouter  效果:

 

public class HelloWorld2 {
	public static void main(String args[]) {
		Shell shell = new Shell();
		shell.setText("Draw2d Hello World");
		shell.setSize(300, 300);
		shell.open();

		// create content 4 shell.
		createContent4Shell(shell);

		while (!shell.isDisposed ()) {
			if (!Display.getDefault().readAndDispatch ())
				Display.getDefault().sleep ();
		}
	}

	private static void createContent4Shell(Shell shell) {
		Panel rootFigure = new Panel();
		rootFigure.setLayoutManager(new XYLayout());

		IFigure figure1 = new Ellipse();
		Ellipse figure2 = new Ellipse();

		// --------------------------------------------------------
		// add connection
		PolylineConnection connection = new PolylineConnection();
		connection.setSourceAnchor(new ChopboxAnchor(figure1));
		connection.setTargetAnchor(new EllipseAnchor(figure2));

		// --------------------------------------------------------
		// add Decoration to Connection
		connection.setSourceDecoration(new PolygonDecoration());

		// --------------------------------------------------------
		// add Labels to Connection
		ConnectionEndpointLocator Locator1 = new ConnectionEndpointLocator(connection, true);
		Locator1.setVDistance(30);
		connection.add(new Label("1..*"), Locator1);
		
		ConnectionEndpointLocator Locator2 = new ConnectionEndpointLocator(connection, false);
		Locator2.setVDistance(15);
		connection.add(new Label("22..*"), Locator2);

		ConnectionEndpointLocator Locator3 = new ConnectionEndpointLocator(connection,true);
		Locator3.setUDistance(80);
		Locator3.setVDistance(-20);
		connection.add(new Label("3333..*"),Locator3);
		
		// --------------------------------------------------------
		// add Router to Connection
		connection.setConnectionRouter(new ManhattanConnectionRouter());



		rootFigure.add(figure1,new Rectangle(10,10,60,30));
		rootFigure.add(figure2,new Rectangle(170,170,90,90));
		rootFigure.add(connection);

		LightweightSystem lws = new LightweightSystem(shell);
		lws.setContents(rootFigure);
	}
}

 


 
 
 

 

  • 大小: 7.1 KB
  • 大小: 6.7 KB
分享到:
评论

相关推荐

    WEB画图框架 draw2d

    - **流程图设计**: `draw2d` 可用于创建和编辑流程图,支持动态调整节点和连线。 - **UML建模**: 用户可以利用它快速构建UML模型,如用例图、类图等。 - **电路设计**: 电子工程师可以使用它模拟电路布局,测试不同...

    vue动态路由router.txt

    vue动态路由router.txt

    vue 项目初识 路由 router.md

    vue 项目初识 路由 router 并进行初步配置以及简单的组件实现,初学vue router可以参考

    ROS LCD 20X2 RouterOS LCD 软路由 Router OS

    ROS LCD 20X2 RouterOS LCD 软路由指的是将RouterOS操作系统与20x2字符型液晶屏结合,用于实现对路由器系统的实时监控。RouterOS是一款强大的网络操作系统,通常用于软路由设备,它提供了丰富的配置选项和管理功能。...

    软路由RouterOS-5.22.hnt.1G

    软路由 RouterOS-5.22.hnt.1G(亲测:已完美激活、最高级L6级授权ROS).zip

    深入Vue-Router路由嵌套理解

    首先假设项目中有两个路由Profile和Posts,按写法把他们定义为一层路由,是Root的子路由,因此Root中要有router-view组件去承载子路由,才能实现子路由切换展示 一层路由 Root容器 <h1>Ro

    uni-simple-router实现简单的路由守卫

    本示例“uni-simple-router实现简单的路由守卫”旨在教你如何利用uni-simple-router库来实现这一功能。uni-simple-router是专为uni-app设计的一个轻量级路由管理插件,它提供了一些强大的特性,包括路由守卫,使我们...

    React-router4路由监听的实现

    ### React-router4路由监听的实现 #### 核心概念 React-router4 是一个完全基于React的路由解决方案。与之前的版本不同,React-router4 中不再需要传统的路由配置,它完全将路由作为React组件来处理。这种基于组件...

    angularjs ui.router嵌套路由demo

    AngularJS UI.Router是一个强大的路由模块,它为AngularJS应用程序提供了更复杂的导航结构和状态管理功能。这个"angularjs ui.router嵌套路由demo"是展示如何在AngularJS项目中使用UI.Router进行多级路由配置和页面...

    软路由RouterOS设置实战篇

    【RouterOS设置实战篇】是关于如何将普通PC转变为专业路由器的文章,重点讲解了使用RouterOS软件进行ADSL PPPOE拨号和固定IP光纤的配置步骤。RouterOS是一款功能强大的路由器操作系统,它具备多种高级功能,适用于从...

    router-view复用路由的抽离

    `router-view`是Vue Router中的一个特殊组件,用于渲染根据当前路由匹配的组件。本文将深入探讨路由的注意事项,特别是涉及二级、三级路由的引用,以及如何通过合理抽离来实现`router-view`的复用。 首先,让我们...

    react-router4.2使用js控制路由跳转的3种方式

    ### React Router 4.2 使用 JS 控制路由跳转的三种方式 #### 一、背景介绍 随着前端技术的发展,单页应用(SPA)成为现代Web应用开发的标准模式之一。React作为当前流行的UI开发框架之一,由Facebook开源,被广泛...

    angular2中router路由跳转navigate的使用与刷新页面问题详解

    Angular2中Router路由跳转Navigate的使用与刷新页面问题详解 Angular2中Router路由跳转Navigate的使用是Angular2路由跳转的核心部分,而刷新页面问题则是开发中常见的问题。本文将详细介绍Angular2中Router路由跳转...

    RouterOS 路由软件IPv6 功能初探

    摘 要:RouterOS 是一种路由操作系统,通过该软件可以将普通的PC 电脑变成专业路由器,该软件经历了多次更新和改进,其功能在不断增强和完善。特别在无线、认证、策略路由、带宽控制和防火墙过滤等方面有着非常突出...

    22_VueRouter路由使用.pdf

    VueRouter路由使用.pdf VueRouter是Vue.js的官方路由,它与Vue.js核心深度集成,让用Vue.js构建单页应用变得非常容易。Vue Router是基于路由和组件的,路由用于设定访问路径,将路径和组件映射起来。在VueRouter的...

    RouterOS软路由中文编码转换,RouterOS使用中文备注

    总的来说,这个“RouterOS软路由中文编码转换”工具是解决ROS系统中文支持问题的一个有效途径,它使得非英文环境下的用户能够更加方便地使用和管理RouterOS系统。通过深入研究源码,用户不仅可以解决当前的问题,还...

    vue3+ router,专项用于vue3下的动态路由实验

    "vue-router": "^4.0.3" 网上很多例题都是vue2下的动态路由,本例题使用的是vue3系列的,难度不大,用于动态路由的入门学习。也就是动态路由做了多次试验但一次都没成功的学习者。关于本例题,跑不起来的,可以留言...

    解决vue路由name同名,路由重复的问题

    在使用Vue.js进行项目开发时,我们常常会用到Vue-Router来管理路由。随着项目的不断增大,路由配置的复杂性也会相应增加,这时就可能会遇到路由配置中name属性同名以及路由重复的问题。这个问题会使得路由系统无法...

    vue3+webpack+vue-router封装路由

    vue3+webpack+vue-router封装路由,资源内容包含了vue3+webpack+vue-router,并且代码对vue-router路由进行了封装,资源下载下来之后项目代码需要先:npm install,之后就可以运行启动项目了,代码结构清晰,没有...

    API来控制RouterOS软路由系统

    通过API来控制RouterOS软路由系统,实例给出列出在线用记和所有用户的操作。RouterOS需3.0以上版本,且要打开API功能!

Global site tag (gtag.js) - Google Analytics