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

弃jung,换prefuse

阅读更多
prefuse比jung效果好点。于是,研究几天的jung放弃,用prefuse,有经验的同志帮帮忙!有没有实例。。
prefuse是一个用户界面工具包,能够帮助建立互动性强的信息可视化应用程序。

Prefuse提供设备,数据管理,空间布局,颜色,大小和形状编码,渲染,缩放,动画,搜索和互动。此外,它会尝试这样做了模块化的方式,使用户能够拼凑所需功能,以建立自定义的可视化应用。
   public static final String driverName   = "com.microsoft.jdbc.sqlserver.SQLServerDriver";       
       public static final String dbURL        = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Mypaper";       
       public static final String userName     = "sa";       
       public static final String userPwd      = "123456";       
       private Graph graph=null;  //将可视化化需要的数据读入prefuse内部的数据结构,此例选择的是内部的graph结构
 
DatabaseDataSource datasrc = null;     
DatabaseDataSource datasrc = null;     
      //create a table of data  
      try
      { 
       datasrc = ConnectionFactory.getDatabaseConnection(       
                     driverName, dbURL, userName, userPwd);   
      
      } catch (SQLException e) {
           // There was an error connecting to the database
           e.printStackTrace();
           return;
       } catch (ClassNotFoundException e) {
           // The database driver class was not found
           e.printStackTrace();
           return;
       }
         try
      {
        Table nodes = datasrc.getData("select * from test_node");    
      
        Table edges = datasrc.getData("select * from test_edge");   
        Graph graph = new Graph(nodes, edges, false,"id", "sid1", "tid");   
        
        //创建一个可视化图的抽象概念(内部存储的数据结构)
        //此结构包括原始数据域和新的可视化信息,如:x,y坐标,颜色,大小 
        Visualization vis = new Visualization();    
        vis.add("graph", graph);     
        
        System.out.println("3");
      //render和render工厂,用来传递数据
        LabelRenderer r = new LabelRenderer("name");  //使用name来创建带有标签的节点
     
        r.setRoundedCorner(8, 8);       
        vis.setRendererFactory(new DefaultRendererFactory(r));    //决定图形怎么画的主要工具
   
        //数据处理动作,高于前面的visualization处理 
        int[] palette = new int[] {       
                ColorLib.rgb(255,180,180), ColorLib.rgb(190,190,255)       
        };       
               
        DataColorAction fill = new DataColorAction("graph.nodes", "gender",       
                Constants.NOMINAL, VisualItem.FILLCOLOR, palette);       
        ColorAction textColor = new ColorAction("graph.nodes",       
                VisualItem.TEXTCOLOR, ColorLib.gray(0));       
        ColorAction edgesColor = new ColorAction("graph.edges",       
                VisualItem.STROKECOLOR, ColorLib.gray(200));       
               
        ActionList color = new ActionList();     //用来将前面的数据处理动作集合在一起
  
        color.add(fill);       
        color.add(textColor);       
        color.add(edgesColor);       
               
        ActionList layout = new ActionList(Activity.INFINITY);       
        layout.add(new ForceDirectedLayout("graph"));       
        layout.add(new RepaintAction());       
               
        vis.putAction("color", color);       
        vis.putAction("layout", layout);  
        
      //显示和交互控制 
        Display d = new Display(vis);    //显示可视化数据 
        d.setSize(250, 300);       
        d.addControlListener(new DragControl());       
        d.addControlListener(new PanControl());       
        d.addControlListener(new ZoomControl());       
        d.addControlListener(new NeighborHighlightControl());       
    //显示出可视化效果
        JFrame frame = new JFrame("Prefuse");       
           
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);       
//      frame.setSize(800, 600);       
        frame.add(d);       
//      frame.setVisible(true);       
        int width = 300;   
        int height = 400;   
        //获得容器   
        Container container = frame.getContentPane();   
        vis.run("color");       
        vis.run("layout");     
        shell.setSize(new Point(width, height));   
        shell.setLayout(new FillLayout());   
        shell.setText("Prefuse in SWT");   
        // 新建swt组件   
        Composite composite = new Composite(shell, SWT.NO_BACKGROUND   
                | SWT.EMBEDDED);   
        // 注入组件,并返回为frame   
        Frame frm = SWT_AWT.new_Frame(composite);   
        // 加载容器   
        frm.add(container);    
        // 打开shell   
        shell.open();  
    } catch ( DataIOException e) {
        // something went wrong :{
        e.printStackTrace();
        return;
    }
分享到:
评论

相关推荐

    prefuse-beta版工具包

    4. **库依赖**:Prefuse可能依赖于其他Java库,比如Jung(Java Universal Network/Graph Framework)或者Swing库,以实现特定的可视化效果或交互功能。 5. **构建脚本**:如Ant或Maven的配置文件,用于构建和打包...

    jung-jung-2.1.1

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

    jung2-2_0_1jar包

    《JUNG:Java平台上的网络与图应用开发详解》 JUNG,全称为Java Universal Network/Graph Framework,是一个强大的开源库,专为在Java平台上进行网络和图的应用开发设计。标题中的"jung2-2_0_1jar包"指的是JUNG库的...

    prefuse.flare

    prefuse是一个非常不错的开源可视化项目,尤其是用在social network/complex network上,个人感觉要比jung好。不过可惜的是,prefuse的user manual还在建设中,并且google resource也少得可怜。好在开源提供了源码,...

    jung API 帮助文档

    **JUNG API 帮助文档** Java Universal Network/Graph Framework (JUNG) 是一个开源的Java库,它提供了一套工具和接口,用于创建、分析和可视化复杂网络和图形数据。JUNG API 是开发者用来操作和研究这些数据的核心...

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

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

    jung2-alpha2源代码

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

    JUNG 入门编程

    **JUNG(Java Universal Network/Graph Framework)** 是一个开源的Java库,专门用于构建和分析复杂的网络和图形数据。这个框架提供了一组强大的工具,让开发者能够方便地表示、操作和可视化网络和图结构。在本文中...

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

    【JUNG:Java平台网络/图应用开发的一种通用基础架构】 JUNG,全称为Java Universal Network/Graph framework,是一个开源的Java项目,专门用于构建和分析图或网络结构的应用程序。它提供了丰富的功能,包括创建图...

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

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

    JUNG2-Tutorial

    ### JUNG2-Tutorial:Java Universal Network/Graph框架详解 #### 一、引言与概述 JUNG2(Java Universal Network/Graph Framework)是JUNG(Java Universal Network/Graph)框架的一个重大修订版本,旨在为Java...

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

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

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

    开源项目-jung-kurt-gofpdf.zip是一个包含Gofpdf库源代码的压缩包,它是一个用Go语言编写的PDF生成器,具有无依赖性的特点。这意味着你可以直接在你的Go项目中使用它,无需安装其他外部库或工具,简化了项目的构建和...

    Jung网络分析

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

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

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

    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方法的实时背景提取算法

    本文介绍了一种针对这一问题的改进方法,即基于改进Jung方法的实时背景提取算法。 Jung背景提取算法是一种简单而快速的方法,它通过计算一段时间内的图像平均值来建立背景模型。然而,这种算法在背景发生快速变化时...

Global site tag (gtag.js) - Google Analytics