介绍


    是一个Java开源项目,其目的在于为开发关于图或网络结构的应用程序提供一个易用、通用的基础架构。使用JUNG功能调用,可以方便的构造图或网络的数据结构,应用经典算法(如聚类、最短路径,最大流量等),编写和测试用户自己的算法,以及可视化的显示数据的网络图。


1.  图数据结构


    ParseMultiGraph 和ParseDirectedGraph,这两个类支持参数化,可以传入自定义的 vertex和edge类


2.  图算法


    两点间最短路径


    最大流


3. 图形可视化


    BasicVisualizationServer 是显示图形的基本类,实现接口 VisualizationServer,继承swing的JPanel 类,作为graph显示的画布


    Layout接口和 edu.uci.ics.jung.algorithms.layout下的类 完成布局。


    显示图形的最少内容(参考SimpleGraphView.java 类):


        1.  graph数据结构


        2.  layout的实现,如CircleLayout    


        3.  BasicVisualizationServer 


        4. 基本的GUI 组件,如 swing JFrame


    为边和线着色、label  


        Renderer: 画edges, edges label ,vertext, vertex label ;RenderContext提供参数


        参考  SimpleGraphView2.java 


4. 获得交互


    鼠标交互:根据赋值的mode 有不同的行为,包括 picking, zooming, transforming(rotation, shearing), translating(panning) , editing(adding/deleting nodes and edges)


    zoom和transform graph


        DefaultModalGraphMouse 提供 picking和transforming能力    


        参考: InteractiveGraphView1.java


    根据 键盘输入改变mouse mode (key listeners)


         参考: InteractiveGraphView2.java


    图形编辑: add vertics和node 交互


        EditingModalGraphMouse和 Factory<E>和Factory<V>的继承类


        用户通过鼠标决定vertices的位置,则使用 StaticLayout


        参考 EditingGraphView1.java


    通过edge和vertext的属性菜单进行编辑


        参考 GraphElements.java    PopupVertexEdgeMenuMousePlugin.java   VertextMenuListener.java  EdgeMenuListener.java   MenuPointListener.java  MyMouseMenus.java  DeleteEdgeMenuItem.java  DeleteVertexMenuItem.java  EditorMouseMenu.java  EdgePropertyDialog.java