`
ljjclub
  • 浏览: 35332 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jung 实例代码(原创)

阅读更多
例如网络管理、人际关系网络、思维脑图、地理导航以及多种游戏等,在本质上都是对“图”的计算;JUNG就是专为图(Graph)的计算和可视化提供的一个通用的可扩充的Java编程平台。

只找到一个API在线地址:http://jung.sourceforge.net/doc/api/
JUNG(Java Universal Network/Graph framework)是一个Java开源项目,其目的在于为开发关于图或网络结构的应用程序提供一个易用、通用的基础架构。使用JUNG功能调用,可以方便的构造图或网络的数据结构,应用经典算法(如聚类、最短路径,最大流量等),编写和测试用户自己的算法,以及可视化的显示数据的网络图。
package test;

import java.awt.*;

import javax.swing.*;

import org.apache.commons.collections15.Transformer;
 //http://faithlee.iteye.com/blog/1420065
import edu.uci.ics.jung.graph.*;
import edu.uci.ics.jung.graph.util.EdgeType;
import edu.uci.ics.jung.algorithms.layout.*;
import edu.uci.ics.jung.visualization.BasicVisualizationServer;
import edu.uci.ics.jung.visualization.VisualizationViewer;
import edu.uci.ics.jung.visualization.control.DefaultModalGraphMouse;
import edu.uci.ics.jung.visualization.control.ModalGraphMouse.Mode;
import edu.uci.ics.jung.visualization.decorators.ToStringLabeller;

public class Test1To5 extends JFrame {

	@SuppressWarnings("unchecked")
	public Test1To5() {
		this.setTitle("示例");
		this.setFont(new Font("Times New Roman", Font.PLAIN, 12));
		this.setBackground(Color.white);// 设置窗口背景颜色
		// 初始化图g
		SparseGraph g = new SparseGraph();

		for (int i = 1; i < 10; i++) {
			g.addVertex(i);
			g.addEdge("Edge[1," + (i + 1) + "]", 1, i + 1);
			if (i > 1) {
				g.addEdge("Edge[" + i + "," + (i + 1) + "]", i, i + 1);
			}
		}
 //http://faithlee.iteye.com/blog/1420065
		System.out.println("The graph g = " + g.toString());
		// 使用该图创建布局对象
		// Layout layout = new CircleLayout(g);//圆形布局结构
		Layout layout = new FRLayout2(g);
		// 使用布局对象创建BasicVisualizationServer对象
		// BasicVisualizationServer vv = new BasicVisualizationServer(layout);
		VisualizationViewer<Integer, Paint> vv = new VisualizationViewer<Integer, Paint>(
				layout);

		// 渲染环境 颜色参数
		Transformer<Integer, Paint> vertexPaint = new Transformer<Integer, Paint>() {
			public Paint transform(Integer s) {
				if (s == 1)
					return Color.green;
				else
					return Color.YELLOW;
			}

		};

		// 设置顶点文本标签
		vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller());
		// 设置顶点颜色
		// vv.getRenderContext().setVertexFillPaintTransformer(vertexPaint);
		// 设置边的文本标签
		vv.getRenderContext().setEdgeLabelTransformer(new ToStringLabeller());
		// 设置边的线型
		// vv.getRenderContext().setEdgeStrokeTransformer();

		DefaultModalGraphMouse<Integer, Paint> gm = new DefaultModalGraphMouse<Integer, Paint>();
		gm.setMode(Mode.PICKING);
		vv.setGraphMouse(gm);
		// 将上述对象放置在一个Swing容器中并显示之
		getContentPane().add(vv);
		pack();
	}

	public static void main(String[] args) {
		Test1To5 myframe = new Test1To5();
		myframe.setExtendedState(JFrame.MAXIMIZED_BOTH);
		myframe.setVisible(true);
	}
}
[img][/img]
JUNG对图、树、森林等数据结构的计算和可视化提供了完整的基础支持,大大的提高相关应用软件的实现进度;同时JUNG在图树算法、交互支持、可视化布局等方面有着强大功能,不足的地方是,其API的文档不够齐全,有些内容甚至严重过期,因此需要参考其源码(可以在Source Forge下载)进行工作。http://jung.sourceforge.net/applet/index.html中更有多个内容丰富的样例可供参考;
1
1
分享到:
评论

相关推荐

    jung2-alpha2源代码

    《JUNG2-alpha2源代码解析》 Java Universal Network/Graph Framework(JUNG)是一个开源软件库,设计用于处理各种类型的图数据结构和算法。JUNG2-alpha2是该框架的一个版本,它提供了丰富的功能来支持图形可视化和...

    jung-jung-2.1.1

    在"jung-jung-2.1.1"这个压缩包中,我们能够获取到JUNG 2.1.1版本的源代码,这对于深入理解JUNG的工作原理和开发基于JUNG的应用程序至关重要。下面将对JUNG的关键特性和源码实现进行详细讲解。 1. **图数据结构**:...

    jung2-2_0_1jar包

    5. **jung-samples-2.0.1.jar**:包含了丰富的示例代码,帮助初学者快速理解和掌握JUNG的使用,同时也可以作为开发新应用的起点。 6. **jung-3d-demos-2.0.1.jar** 和 **jung-3d-2.0.1.jar**:这两个库是JUNG的3D...

    jung API 帮助文档

    JUNG的帮助文档中包含了大量的代码示例,覆盖了从创建基本图到运行复杂算法的全过程。这些示例有助于快速上手并理解API的用法。 9. **社区和支持** JUNG有一个活跃的开发者社区,提供了论坛、邮件列表和问题跟踪...

    JUNG 入门编程

    2. **创建图实例**:演示如何实例化一个图对象,比如使用`SimpleGraph`类。 3. **添加元素**:说明如何添加节点和边到图中,并设置属性如权重。 4. **运行算法**:介绍如何使用内置的图算法,例如查找最短路径或计算...

    jung中文教程+示例源码+jar包+API帮助文档

    jung中文教程(read me first) jung jar包 jung API帮助文档 jung示例源码 源码内容包括: 1.创建图的数据结构 2.图的可视化表现 3.网络图的修饰 4.自定义顶点、边的数据类型 5.从文件中读入图 6.关于图...

    JUNG:Java平台网络/图应用开发的一种通用基础架构

    这段代码创建了一个`FRLayout`布局实例,然后创建了`VisualizationViewer`,设置了顶点标签的转换器,并设置可视化窗口的大小及可见性。 3. 图算法应用 JUNG包含了多种经典的图算法,如聚类算法、最短路径算法...

    JUNG2-Tutorial

    因此,本教程中的代码示例将不会涵盖JUNG2的所有强大特性,而是专注于演示如何利用该框架实现特定的功能。 需要注意的是,由于JUNG2目前处于“alpha”发布阶段,因此文档中的某些部分可能与当前alpha版本不同步。...

    jung中文教程+示例源码+jar包

    jung中文教程(read me first) jung jar包 jung示例源码 源码内容包括: 1.创建图的数据结构 2.图的可视化表现 3.网络图的修饰 4.自定义顶点、边的数据类型 5.从文件中读入图 6.关于图的应用算法 7.可视化人机...

    JUNG,Java的第三方API 用来实现图的可视化

    java的复杂网络作图工具包JUNG简明教程,Java Universal Network/Graph Framework,提供有向图,无向图,混合网络,以及各种展现接口,只要不是绘制特别巨大的图,效果可以。

    开源项目-jung-kurt-gofpdf.zip

    开源项目-jung-kurt-gofpdf.zip 是一个包含Gofpdf库源代码的压缩包,这个库是用Go语言编写的,专为生成PDF文档而设计。它的一大特点是无需依赖其他外部库,使得在各种环境中集成和使用变得更加简单。Gofpdf通过提供...

    jung-algorithms-201-modified-sources:进行了一些小修改的jung-algorithms-2.0.1项目的源代码-Source code modification

    《JUNG算法库2.0.1修改版源代码解析》 JUNG(Java Universal Network/Graph Framework)是一个强大的开源库,专为图形和网络数据分析而设计。标题中提到的"jung-algorithms-201-modified-sources"是JUNG算法库2.0.1...

    Jung网络分析

    Java开源网络分析工具,功能强大,算法齐全,可视化支持良好

    jung

    这些工具允许Python代码调用Java库,因此可以通过它们来访问和操作JUNG的功能。例如,用户可能创建一个Python脚本,用以加载JUNG库,构建网络模型,然后进行各种网络分析和可视化。 在文件名列表中提到了"jung-main...

    基于PLC的德国JUNG磨床改造应用.pdf

    本文以德国JUNG磨床的电气改造为例,详细探讨了利用三菱PLC对其电气系统进行改造的过程、方法和效果。 1. JUNG磨床概述 JUNG磨床是一种精密加工设备,主要用于金属和塑胶模具的精磨加工。其工作原理是利用砂轮的...

    matlab直扩代码-ncomms_2021_Jung:ncomms_2021_Young

    matlab直扩代码ncomms_2021_Jung 代码与手稿(Jung等人)相关。 “在抗原识别之前从T细胞微绒毛的尖端预先排除CD45” 系统要求 MATLAB提供的脚本使用Matlab(),版本:'9.4.0.813654(R2018a)。 不需要其他工具箱...

    Java开源,用于画图 pdf

    这段代码首先创建了一个SparseGraph实例,然后添加了两个顶点,并在这两个顶点之间添加了两条平行边。 #### 三、JUNG概述 ##### 1. 概述 JUNG的主要目标是提供一个通用且可扩展的语言来处理可以表示为图或网络的...

Global site tag (gtag.js) - Google Analytics