转载自:https://www.cnblogs.com/leefreeman/archive/2012/06/28/2567794.html
在RCP应用上使用Jfreechart绘制图表(附源码)
2012-06-28 16:21 by 飘扬的红领巾, 1900 阅读, 0 评论, 收藏, 编辑
下午闲来无事,找出Jfreechart来复习一下,做了个在RCP上使用Jfreechart的小程序。
第一步、创建RCP程序。
在Eclipse中,使用向导创建Eclipse插件程序:
后面就不说了,填写相应项,一路下去,创建好Eclipse插件程序,运行可以看到:
第二步、创建视图
创建视图既可以使用向导创建,也可以手动添加Java类,如添加类似这样的类:
1 |
|
然后在Perspective .java中将创建的视图添加到透视图中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
代码就不详细讲解了,最后会把整个例子的源代码共享出来。
创建了视图,应用程序运行起来就会是这样子:
第三步、在视图中创建树
在创建好的视图类中,添加创建树的代码,代码有点多不贴了,可以到附件中下载。
上图创建了一个树,表示将要在右边视图显示的图表的类别(柱状图、坐标图、饼图)
第四步、创建图表
先添加一个图表类,以饼图为例,如PieChart.java。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
|
完成图表类之后,想要在视图中显示它,必须完成下面的工作:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
ChartFactory类是自定义的一个图表工厂,用于创建指定的图表。做完这些事儿,之后。
第五步、实现视图间的通信
简单的来说,就是点击左边的树节点,右边视图中的图表根据点击的节点做相应的更新。实现此功能有很多种方法,常用的方法是在左边视图中,取得右边视图的句柄,然后调用其相关的方法,实现更新。但此方法耦合性较高,不便于扩展,我们不推荐此方法。这里我们使用观察者模式来实现此功能,也就说创建一个被观察者(主题),让视图作为观察者,监听其变化,当监听到主题变化时,做更新图表的操作。而左边视图所做的事情就是在用户点击时,改变主题的内容,触发它的变化。
为此我们这样做:
添加主题:StateModel.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
在应用程序启动时,放置到系统内存中:
1 2 3 4 5 6 7 8 9 10 11 |
|
在左边视图类中先从系统内存中取得StateModel(主题):
1 2 3 4 5 |
|
然后点击事件中:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
stateModel就会触发变更。
而在右边视图中,同样先从内存中取得stateModel,然后将自己加入到观察者队列中(视图必须实现Observer接口):
1 2 3 4 5 6 |
|
响应到主题变更后会自动调用update方法:
1 2 3 4 5 |
|
从而实现左右视图的消息传递。
(柱状图)
(坐标图)
下载