- 浏览: 385599 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (285)
- test (0)
- 分类 (1)
- java (281)
- tttttttttttt (1)
- android程序复制数据库 (1)
- Hibernate 动态 HQL (1)
- java编写扑克的洗牌程序 (1)
- NIO 之 选择就绪模式 (1)
- wpo另类问题:不可轻视的蜘蛛爬行对服务器造成的负担 (1)
- haml (1)
- cvcvcvc (1)
- 开源史上最成功的8个开源产品 (1)
- XML文件转换成Word文件或者Excel文件 (1)
- 一些利用开源浏览器核心开发专用浏览器的连接 (1)
- 毛笔效果简单思路 (1)
- 年终考评以后 (1)
- RFC821 简单邮件传输协议(SMTP)中文定义文档 (1)
- JNI中jstring类型与c语言中的字符串的转换 (1)
- 极限编程(XP)的重构与设计模式 (1)
- MapInfo2005年第三期电子新闻 (1)
- 想到目前各BLOG站点和搜索引擎的一点点缺陷 (1)
- 成功通过DB2的700和701考试 (1)
- 基于记录登陆信息的防止网页暴力破解方法 (1)
- Router路由 (1)
- 终于稍微完整的学习了一下Linux (1)
- android手机通讯录备份还原代码 (1)
- Qt之美(一):d指针/p指针详解 (1)
- DB2 静默安装 (1)
- linux开机启动脚本的顺序 (1)
- Hibernate实体对象的三种状态 (1)
- Hibernate面向对象的hql语句 (1)
- ibatIS调用存储过程 (1)
- Linux启动过程(详细说明) (1)
- C3P0配置 (1)
- memcache安装 (1)
- js event.keyCode (1)
- java获取汉子首字母 (1)
- Eclipse GC log (1)
- java轻量级httpserver (1)
最新评论
-
smilea001:
我知道了,作者采用的是gbk编码,我采用的是utf-8编码,
java获取汉子首字母 -
smilea001:
我输入的也是--
java获取汉子首字母 -
di1984HIT:
写的不错啊。
Router路由 -
kaixinyou:
...
2011.07.20——— android 获得当前view在屏幕的坐标 -
zhengjianbo:
你好,可以将你的实现代码公布下吗!万分感谢!
毛笔效果简单思路
Router路由:设定线的轨迹,在Connection接口中定义了添加路由的方式,所以实现了Connection接口的Figure都可以添加路由。另外在ConnectionLayer中有一个方法,是为此Layer下的所有实现了Connection接口的Figure添加一个路由。当然,我们还可以自定义一些Figure添加路由。
?
ConnectionRouter接口:路由的基础接口,所有的路由必须实现此接口。
?
以下是draw2D中常用的几个路由:
1.NullConnectionRouter:ConnectionRouter接口默认提供的实现,直线路由,其实就是不设定任何规则。
?
2<span style="color: #333333;">.</span><span style="color: #333333; font-family: Arial; font-size: 14px; line-height: 26px;">[size=medium;][size=small;]<span style="color: #ff0000;">AutomaticRouter[/size],这是一个抽象类,要用的话得用它的实现类[/size]</span><a style="color: #336699; text-decoration: none;" title="class in org.eclipse.draw2d" href="http://writeblog.csdn.net/org/eclipse/draw2d/FanRouter.html">[size=medium; color: #ff0000;][size=small;]FanRouter[/size][/size]</a>[size=medium;][size=small;]?,这个路由会判断两结点间是否有重复线,有的话会把重复的线分开,? 变成两条线~~[/size][/size]</span>
?
<span style="color: #333333; font-family: Arial; line-height: 26px; font-size: small;">3.<span style="color: #ff0000;">BendpointConnectionRouter</span>,<span style="color: #000000;">增加连接线的路由点 ,让你的连线有路由点,从而可以方便的改变方向</span></span>
?
4.<span style="color: #333333; font-family: Arial; line-height: 26px; font-size: small;">?<span style="color: #ff0000;">ManhattanConnectionRouter</span>,这个路由能保证画出来的线是垂直或水平的,如果你需要这样的效果就可以设置成这个路由。</span>
?
<span style="color: #333333; font-family: Arial; line-height: 26px; font-size: small;">5.?<span style="color: #ff0000;">ShortestPathConnectionRouter</span>?最短路径路由器,这个路由还是比较强大的,可以方便的避免连线穿越结点,它会以最近的路径绕开其它结点,完成连线。</span>
?
?
自定义路由的实现思路:
<span style="font-family: arial, nsimsun, sans-serif;">显然我们无法凭空的计算出线路的走向,一条连线的具体路线和很多因素有关,比如锚点、图形的位置和大小,图形之间的相互关系,等等。所以我们需要能够访问到这些必须的信息,在Connection接口中,我们有getTargetAnchor()和getSourceAnchor()可以让我们得到锚点,而在ConnectionAnchor接口中(参见本系列第一部分),我们有getOwner()这样的方法,可以得到图形。这些必要的方法为我们实现路由器提供了可能。</span>
?
Object getConstraint(Connection connection);
void setConstraint(Connection connection, Object constraint);
void invalidate(Connection connection);
void route(Connection connection);
void remove(Connection connection);
?
<span style="font-family: arial, nsimsun, sans-serif;">setConstraint和getConstraint用来设置/得到连接上的Constraint(约束),所谓Constraint是指加在某个连线上的一些参数。我们可以看到constraint是一个Object类型,因为不同的路由器可能对constraint有不同的要求,对于ShortestPathConnectionRouter来说,constraint需要是一个List对象,里面包含了所有的转折点。</span>
<span style="font-family: arial, nsimsun, sans-serif;">invalidate方法可以将一个连线置为无效,这样在下一次布局操作时,无效的连接将被重新路由。remove方法是将连线从路由器中删除,也就是路由器不会再负责这条连线的布局,一般只有在删除一条连线的时候才会调用到,我们可以在里面做一些清除工作,比如释放和连线相关的cache。route方法是路由操作真正发生的地方,我们一般只需要实现route方法就可以了,如果你还想做一些其他的操作,可以考虑实现其他方法。同样,一般是不推荐直接实现ConnectionRouter接口的,我们可以继承AbstractRouter类,这个类提供了一些简单的或者空的实现,还提供了两个额外的方法getStartPoint()和getEndPoint()方便我们得到连线的两个端点。</span>
?
public void route(Connection conn) { // 清空连线的所有点 PointList points = conn.getPoints(); points.removeAllPoints(); // 得到目标和源参考点 Point sourceRef = conn.getSourceAnchor().getReferencePoint(); Point targetRef = conn.getTargetAnchor().getReferencePoint(); A_POINT.setLocation(sourceRef.x, targetRef.y); // 得到起始点和结束点 Point startPoint = conn.getSourceAnchor().getLocation(A_POINT); Point endPoint = conn.getTargetAnchor().getLocation(A_POINT); // 添加起始点 A_POINT.setLocation(startPoint); conn.translateToRelative(A_POINT); points.addPoint(A_POINT); // 添加转折点 A_POINT.setLocation(sourceRef.x, targetRef.y); conn.translateToRelative(A_POINT); points.addPoint(A_POINT); // 添加结束点 A_POINT.setLocation(endPoint); conn.translateToRelative(A_POINT); points.addPoint(A_POINT); // 设置连线经过的所有点 conn.setPoints(points); }
?
<span style="font-family: arial, nsimsun, sans-serif;">一条连线实际上是通过一系列的点来描述的,而route方法的实际任务也就是计算出这些点的位置。所以我们一开始就得到了这条连线的点序列(PointList对象),然后清空它,重新计算这些点。在我们这个路由器的设计里,一条连线由三个点组成:分别是起始点,转折点和结束点,它们构成了两条垂直的直线。起始点和结束点(也就是锚点)我们都已经了解如何得到了,中间的转折点,也很容易得出,我们就不解释了。要指出的是,我们需要把它们的坐标转换为相对坐标再添加,同时在添加完成之后,我们还需要调用setPoints()方法,这样才会生效。</span>
发表评论
-
java轻量级httpserver
2012-02-08 11:48 1552httpclient+httpserver demo ... -
Eclipse GC log
2012-02-04 16:59 1376为了查看Eclipse GC log,需要在eclip ... -
java获取汉子首字母
2012-02-03 09:14 1504public class StringUtil { ... -
js event.keyCode
2012-02-03 09:09 1185<span style="" ... -
memcache安装
2012-02-02 12:04 1127? <blockquote> 1. ... -
C3P0配置
2012-02-02 11:34 969cquireIncrement[3] ... -
Linux启动过程(详细说明)
2012-02-01 09:09 1545<div class="post ... -
ibatIS调用存储过程
2012-01-31 15:38 1590<p>一、ibatIS调用存储过程(调用存 ... -
Hibernate面向对象的hql语句
2012-01-11 13:14 987Hibernate中hql条件语句的书写方式有: ? ... -
Hibernate实体对象的三种状态
2012-01-11 12:59 1257<p style="text- ... -
linux开机启动脚本的顺序
2011-12-21 15:14 1090下开机自动启动脚本所涉及的知识和方法、如下: ... -
DB2 静默安装
2011-12-21 11:59 1039<span style="color: ... -
Qt之美(一):d指针/p指针详解
2011-12-20 15:14 1931[/b]2011.11.16 [size=18px;] ... -
android手机通讯录备份还原代码
2011-12-20 11:54 2921<span style="font-f ... -
终于稍微完整的学习了一下Linux
2011-12-19 12:14 1156Linux以前也装过两次,不过几乎没去用。头几天看一些 ... -
基于记录登陆信息的防止网页暴力破解方法
2011-12-17 10:49 1421对黑客方面比较感兴趣的或者是比较熟悉的,应该知道溯雪这 ... -
成功通过DB2的700和701考试
2011-12-16 17:27 850嘿嘿,原以为比较没有信心的701考试也被俺成功的攻克了 ... -
想到目前各BLOG站点和搜索引擎的一点点缺陷
2011-12-15 15:54 862感觉无聊,就到中国博客网的首页逛了逛,想看看有没有什么 ... -
MapInfo2005年第三期电子新闻
2011-12-15 10:49 884<span lang="EN-US&q ... -
极限编程(XP)的重构与设计模式
2011-12-14 20:58 1417</span></span>& ...
相关推荐
接着我继续追问…(省略)…大致明白了情况,原来这位朋友没有理解Vue-Router嵌套的原理,下面整理了一下我对Vue-Router路由嵌套的理解 Vue-Router嵌套路由 首先假设项目中有两个路由Profile和Posts,按写法把他们...
vue3+webpack+vue-router路由封装+axios封装+vuex封装,下载资源中包括了vue3+webpack+vue-router路由封装+axios封装+vuex封装的相关代码,分别对vue-router路由进行了封装,对axios进行了封装,对vuex进行了封装,...
vue3+webpack+vue-router路由,文件的代码包含了vue3+webpack+vue-router路由,代码清晰,下载下来只需要npm install下载一下依赖项之后就可以直接运行代码了。
22_VueRouter路由使用.pdf
vue3+webpack+vue-router路由+axios,资源包含了vue3+webpack+vue-router路由+axios的相关代码,并且对vue-router路由进行了封装,也对axios进行了封装,资源代码需要先:npm install 安装下依赖组件之后就可以启动...
router路由策略之重分布
vue-router路由 myv源码
主要给大家介绍了angular2中router路由跳转navigate的使用与刷新页面问题的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
详解Vue router路由,1.基本使用 2.几个注意点 3.多级路由(多级路由) 4.路由的query参数 5.命名路由 6.路由的params参数 7.路由的props配置 8.编程式路由导航 9.缓存路由组件
VUE3.0脚手架构建的VUE3.0前端初始工程,包含router路由
VUE3.0的脚手架构建的最基本的初始项目压缩包,不包含router路由,解压运行,npm install,npm run dev即可运行
Vue项目 Router路由,Pinia状态管理, Vuex状态管理 Vant List组件,NavBar组件,Swipe轮播组件,Axios请求拦截,页面布局案例
router.beforeEach((to, from, next) => { if (to.matched.some(record => record.meta.requireAuth)){ // 判断该路由是否需要登录权限 if (token) { // 判断当前的token是否存在 next(); } else { next({ ...
本实例主要包含简洁的Vue-Router的路由配置,以及公用尾部组件的抽取使用。本实例主要用于学习Vue-Router配置的流程,帮助Vue初学者自己动手配置路由。
vue-router-nav呈现vue-router路由的简约响应式导航栏。 观看演示。 依赖关系您需要拥有vue-router insta vue-router-nav简约的响应式导航栏,用于呈现vue-router的路由。 观看演示。 依赖关系您需要安装vue-router...
今天小编就为大家分享一篇浅谈vue-router路由切换 组件重用挖下的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
这是一个使用uni-simple-router实现简单的路由守卫
本篇文章主要介绍了AngularJs ui-router 路由的简单介绍。简单明了的说明了ngRoute和ui-router的区别和用法,有兴趣的可以了解一下
笔记:vue-router路由拦截造成死循环,在做路由拦截的时候,一直出现死循环. router的index.js文件路由配置 const router = new Router({ routes: [{path: '/login',name: 'login',component: Login,meta: {isShow: ...