思诚科技 seecen LOGO
咨询热线:0791-87557233
  首页 |   Java EE  
关于思诚
关注官方微信

在Java中使用Draw2D和SWT绘图

来源:网络    更新时间:2014-12-3


  用Java绘图一直都吸引着开发人员的注意。传统上,Java开发人员使用java.awt.Graphics或Java2DAPI进行绘图。一些开发人员甚至使用现成的开源工具箱(如JSci)来绘图。但很多时候,您的选择被限定在了AWT或Swing上。为了最大限度地减少对第三方工具箱的依赖,或者为了简化绘图基础,可以考虑使用Draw2D,并编写自己的代码来制图或绘图。

  Draw2D简介

  Draw2D是一个驻留在SWTComposite之上的轻量级窗口小部件系统。一个Draw2D实例由一个SWTComposite、一个轻量级系统及其内容的图形组成。图形是Draw2D的构建块。关于Draw2DAPI的所有细节,可以从Draw2DDeveloper’sGuide的Eclipse帮助文件中找到。因为本文不打算成为一篇讲述Draw2D的教程,所以,为了简便起见,只要您了解Draw2DAPI可以帮助您在SWTCanvas上进行绘图就足够了。您可以直接使用一些标准的图形,比如Ellipse、Polyline、RectangleFigure和Triangle,或者,您可以扩展它们来创建自己的图形。此外,一些容器图形,如Panel,可以充当所有子图形的总容器。

  Draw2D有两个重要的包:org.eclipse.draw2d.geometry和org.eclipse.draw2d.graph,本文中使用了这两个包。org.eclipse.draw2d.geometry包有一些有用的类,比如Rectangle、Point和PointList,这些类都是自我解释的。另一个包org.eclipse.draw2d.graph开发人员使用的可能不是太多。这个包提供了一些重要的类,比如DirectedGraph、Node、Edge、NodeList和EdgeList,这些类有助于创建图表。

  在本文中,我将解释如何使用Draw2D编写代码,帮助您以图形的方式形象化您的数据。我将从一项技术的描述开始,该技术将位于某一范围内的数据值(比如,从0到2048)按比例缩放成另一范围内的等效数据值(例如,从0到100)。然后,我将举例说明如何绘制出任意个级数的X-Y坐标图,每个级数都包含一组数据元素。在学习了本文中的概念之后,就可以很容易地绘制其他类型的图表,比如饼图和条形图。

  具体的绘图过程


  步骤1:您想绘制什么样的图形?

  显然,您想以图形方式描绘来自数据源的数据。所以,您需要那些您想以图形形式形象化的数据。为了简便起见,我使用了一个名为dataGenerator的简单函数生成的数据,而不是从XML文件或其他一些数据源读取数据,该函数使用了一个for(;;)循环,并以数组列表的形式返回生成的值。
清单1.生成一些数据
privateArrayListdataGenerator(){doubleseries1[]=newdouble[5];for(inti=0;i<series1.length;i  )series1[i]=(i*10) 10;//alinearseriescontaining10,20,30,40,50doubleseries2[]=newdouble[9];series2[0]=20;series2[1]=150;series2[2]=5;series2[3]=90;series2[4]=35;series2[5]=20;series2[6]=150;series2[7]=5;series2[8]=45;doubleseries3[]=newdouble[7];for(inti=0;i<series3.length;i  )series3[i]=(i*20) 15;seriesData.add(series1);seriesData.add(series2);seriesData.add(series3);returnseriesData;}

  步骤2:缩放技术——从给定的数据生成X坐标和Y坐标



一些新的术语

FigureCanvasDraw2D中的FigureCanvas是SWTCanvas的一个扩展。FigureCanvas可以包含Draw2D图形。PanelPanel是Draw2D中的一个通用容器图形,它可以包含子图形。您可以向一个Panel图形中添加许多图形,然后将这个Panel图形提供给FigureCanvas。DirectedGraphDirectedGraph是一个2-D图形,拥有有限数量的Node,每个Node都位于一些Point中,相邻的Node是通过Edges彼此连接在一起的。

  • 上一篇文章:

  • 下一篇文章:
  •  

    0791-87557233

    重视每个来电 珍惜您的时间
    思诚者开发沙龙
    江西思诚科技有限公司  赣ICP备17006097号  CopyRight©2014 - 2018