JGraph简介及操纵本领[Java编程]
本文“JGraph简介及操纵本领[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
本来一向很少有机会接触Swing或AWT的,只是近来公司要做一个工作流定制界面,所以才终于得偿所愿.我知道,假如一切从底层做起的话,恐怕时间、精神都不答应,而现成的一些工作流产品又不能满意公司特定行业工作流的需求,所以只好找一个开源的中间件举行改正了.就这样,渐渐的熟习了JGraph……
关于JGraph,open-open上是这样介绍的:JGraph,纯Java开辟的图形组件,支持拖,放,缩放,归并等别的操作.它可以被结合到任何的Swing利用程序当中.
在JGraph的网站上可以看到,它分为Free、Pro和Layout Pro版本,作为广大的“劳苦公众”来说,当然首选Free版了,呵呵~~
JGraph的画图机制
参照了JGraph的example和源代码,发现:
JGraph将图元定义为一个一个的cell,每个cell可以是一个顶点(Vertex)、边(Edge)大概节点(Port)中的一种.顶点可以有毗邻的顶点,他们通过边相接洽,边联接的两个端点称为目标和源,每个目标大概源是一个节点.节点是顶点的孩子.每个cell都可以有自己的孩子.
每个cell的外观由呼应的属性定义,属性序列是指一系列的键-值对,他们以Map情势组织,比方:
//定义Edge的外观
Map map = new Hashtable();
GraphConstants.setLineEnd(map, GraphConstants.ARROW_CLASSIC);
GraphConstants.setEndFill(map, true);
GraphConstants.setLabelAlongEdge(map, true);
getAttributes().applyMap(map);
而“画布”(类JGraph,无妨如此理解吧)也可以有自己的外观属性.比方:
//定义画布的属性
setBackground(Color.decode("#C0C0C0"));
setEditable(false);
setCloneable(false);
setInvokesStopCellEditing(true);
setJumpToDefaultPort(true);
setPortsVisible(false);
setGridEnabled(false);
setGridVisible(false);
setGridMode(JGraph.CROSS_GRID_MODE);
setGridColor(Color.decode("#808080"));
setGridSize(10);
JGraph的扩大
JGraph只是供应纯真的图形绘制功效,不包含实际的数据,所以要想办法把自己的数据“加”进去才行,这恐怕就得考虑扩大JGraph了.
顶点(Vertex)对应的类为org.jgraph.graph.DefaultGraphCell
边(Edge)对应的类为org.jgraph.graph.DefaultEdge
节点(Port)对应的类为org.jgraph.graph.DefaultPort
我们要做的,仅仅是辨别担当呼应的类,并把自己的数据对象放进去罢了.当然,还可以改变呼应的外观属性.不过假如你对画图事件也感爱好的话(呵呵,十有八九应当有效的),还要留神一下org.jgraph.graph.BasicMarqueeHandler和org.jgraph.graph.GraphUndoManager这两个类呢.BasicMarqueeHandler中包含了在画布上点击鼠标、增添连线、归并等等事件的处理,而GraphUndoManager则主管撤消、答复事件
假如细心操作,你大概回发现,点击边(Edge)的端点举行移动的事件并不由GraphUndoManager来处理,这时刻就要再关注一个类了:org.jgraph.graph.EdgeView.EdgeHandle,这是一个内部类,假如需求的话,自己重写一个类担当它吧.这样,大部份需求的事件都尽在自己的掌握中了
总结
其实也没什么好总结的,写本文也是犹豫再三才开键盘的,本来预备在上个月就写呢.一向拖到目前,因为认为只是简单的利用罢了,满是基本功,没有一点“高级”的“新意”,仿佛实在没什么好写的.
本日在BlogJava上看了一篇帖子,感触颇深,此中一句“成天口若悬河新技术,不如将经典的旧技术烂醉于心”,一语解开了困惑我很长时间的一个疑团!从基本功做起,不是高手,唯手熟而……
以上是“JGraph简介及操纵本领[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |