快速业务通道

Java中使用Draw2D和SWT绘图 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
n() 函数中调用的 SWT shell。

在扩展 Eclipse ViewPart 时,至少必须实现两个函数:createPartControl(Composite parent) 和 setFocus()。函数 createPartControl(Composite parent) 是在屏幕上绘制视图时自动调用的。您的兴趣只在所接收的 SWT Composite 上。因此,将它传递给某个类,然后通过对这个类进行编码来绘制图形。

清单 3. 使用 Eclipse ViewPart 绘图

public class MainGraFixView extends ViewPart{ public void createPartControl(Composite parent) {   //create or get data in an arraylist   ArrayList seriesData = dataGenerator();   //instantiate a plotter, and provide data to it.   DirectedGraphXYPlotter dgXYGraph = new DirectedGraphXYPlotter(parent);   dgXYGraph.setData(seriesData);   dgXYGraph.plot(); //ask it to plot } public void setFocus() { } }

步骤 4;您需要绘制哪种图形?

一旦拥有了数据以及想用来绘制图形的区域,就必须确定您需要哪种类型的可视化。在本文中,我演示了如何编写代码来创建 X-Y 坐标图和线形图。一旦知道了绘制 X-Y 坐标图的技术,就应该能够绘制出其他图形,比如条形图和饼图。要想更多地了解 X-Y 坐标图,请参阅我为本文编写的 DirectedGraphXYPlotter 类(参见所附源代码中的\src\GraFix\Plotters\DirectedGraphXYPlotter.java)。

步骤 5:创建自己的 X-Y 坐标图

X-Y 坐标图应该能够绘制出 2-D 飞机上的任意数量的级数线。每个级数线都应该以图形形式显示出引用 X 和 Y 引用线的那些级数中的每个点的位置。每个点都应该通过一条线连接到级数中的下一个点上。通过使用表示一个点和一条线的 Draw2D 图形,您应该能够创建这样一个坐标图。例如,为了表示一个点,我通过扩展 Ellipse 图形创建了一个 Dot 图形,并使用 PolylineConnection 图形来表示连接线。

DirectedGraphXYPlotter 类只有两个公共函数:setData(ArrayList seriesData) 和 plot()。函数 setData(ArrayList seriesData) 接受您想要以图形形式形象化的数据(参见步骤 1),而 plot() 函数则开始绘图。

一旦调用了 plot() 函数,就必须依次采用以下步骤:

采用一个 SWT Composite,并将 FigureCanvas 放在它之上。然后,将一个类似 Panel 的通用容器图放在画布上。

计算将要绘制的级数的数量,然后填充创建 DirectedGraphs 所需数量的 NodeLists 和 EdgeLists。

在 Panel 图上绘制 X 坐标轴和 Y 坐标轴。(参见所附源代码中\src\GraFix\Figure目录下的 XRulerBar.java 和 YRulerBar.java。)

创建和级数一样多的 DirectedGraphs,以便进行绘图。

在 Panel 图上绘制点和连接线,同时采用步骤 d 中创建的 DirectedGraphs 中的图形数据。

最后,通过提供 Panel 图来设置画布的内容,其中包括到目前为止您已经准备好的所有的点和连接线。

在以下代码中:

第 6-11 行代码对应于上述的步骤 a。

第 14 行,即函数 populateNodesAndEdges(),对应于上述的步骤 b。

第 16 行,即函数 drawAxis(),对应于上述的步骤 c。

第 17 行、第 18 行和第 19 行对应于上述的步骤 d 和步骤 e。

第 20 行对应于上述的步骤 f。

Java中使用Draw2D和SWT绘图(4)

时间:2011-03-05

清单 4. plot() 函数

1. public void plot(){ 2.   //if no place to plot, or no data to plot, return. 3.   if(null==_parent || null==_seriesData) 4.     return; 5. 6.   Composite composite = new Composite(_parent, SWT.BORDER); 7.   composite.setLayout(new FillLayout()); 8.   FigureCanvas canvas = new FigureCanvas(composite); 9. 10.   Panel contents = new Panel();//A Pa

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号