Eclipse+JFreeChart+Plugins开发

eclipse插件 同时被 2 个专栏收录
1 篇文章 0 订阅
1 篇文章 0 订阅

TraceView工具开发

以往博文均为转载,今天心血来潮,准备自己写博文,一方面可以自我总结,另一方面可以共享,方便交流,共同学习。本文主要从以下几方面进行总结:

  • JFreeChart简介
  • Eclipse下使用JFreeChart进行插件开发
  • TraceView功能简介
  • TraceView开发过程中遇到的问题
    为Composite添加滚动条
    修改toolTip显示内容
    打包发布,形成插件

JFreeChart

简介

JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCEL关联。

评价

  • 稳定、轻量级且功能强大
  • 免费开源,但是开发手册和示例要花钱购买
  • API处理简单,很容易上手
  • 生成的图表运行顺畅

另外,JFreeChart的缺陷就是只适合生成图片,而且文字、图片都不是特别清晰,还需要进行一些调整,比较麻烦。在交互性方面它又比不上Flash图表工具,比如Open Flash Chart、AnyChart、FusionCharts等。

Eclipse下JFreeChart插件开发

网上这方面的资料非常多,不会的可以网上搜索一下,我仅仅提出几点注意项:创建JFreeChart应用时添加类包要齐全

TraceView简介

TraceView一个简单的RCP应用,实现根据选择的Log文件,使用JFreeChart类库进行展示的工具,程序运行界面如下:

这里写图片描述

主要功能为:文件选择、图表展示、图表伸缩与保存等。

开发中遇到的问题

  • 为Composite添加滚动条
    在ApplicationWindow开发中,有个很重要的方法
    protected Control createContents(Composite parent) ,它负责创建windows窗体中的内容。

当窗体显示内容大于窗口尺寸时,一般需要滚动条,刚开始,尝试创建窗体时添加滚动属性
Composite composite = new Composite(parent, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
但是,随后发现,当滑动滚动条时窗体中的内容并没有滚动,于是,网上求助,发现ScrolledComposite类可以实现内容滚动,设置方法有2种,具体用法请看ScrolledComposite的说明文档,代码实现如下:

@Override
protected Control createContents(Composite parent) {
final ScrolledComposite scrolledComposite = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL);
JFreeChart chart = AnalyzeDataAndDraw.makeLineAndShapeChart();
final ChartComposite frame = new ChartComposite(scrolledComposite,SWT.NONE, chart, true);

mJFreeCartComposite = frame;
scrolledComposite.setContent(frame);
frame.setLayout(new FillLayout());

scrolledComposite.setExpandHorizontal(true);
scrolledComposite.setExpandVertical(true);
scrolledComposite.setMinWidth(800);
scrolledComposite.setMinHeight(400);
return parent;
}
  • 修改toolTip显示内容

当鼠标滑到图中的每个数据点时可以出现toolTip提示信息,但是JFreeChart本身所提供的功能不能满足实际需求,需要定制toolTip信息。
本项目中根据数据特点,定制的toolTip信息如下:
当鼠标滑到数据点时,提示信息分2行显示:1)时间 ,2)Y值
代码如下:

// 获取Renderer对象
XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer) xyplot.getRenderer();
// 设置toolTip提示格式
StandardXYToolTipGenerator tipGenerator = new StandardXYToolTipGenerator("Time is : {1}\nImmediate is : {2}",NumberFormat.getNumberInstance(),NumberFormat.getNumberInstance());

xylineandshaperenderer.setToolTipGenerator(tipGenerator);
  • 打包发布,形成插件

开发应用程序,显示窗体一般都有:Menubar、Toolbar、Statusbar等。在实际开发过程中发现toolbar指定图标后,当以Java Application 方式调试时,toolbar图标可以正常显示,但导出插件、安装后,运行插件时,程序toolbar图标会抛出异常,无法正常显示图标,显示如下:
这里写图片描述

Eclipse的Console窗口中抛出异常,Log信息如下:

The image could not be loaded:FileImageDescriptor(location=null,
name=icons/open.png)
org.eclipse.jface.resource.DeviceResourceException: Unable to create resource FileImageDescriptor(location=null, name=icons/open.png)

应用程序代码如下:

private void createActions() {
// Create the actions
{
file = new Action("&openAction", ImageDescriptor.createFromFile(null, "icons/open.png")) {
    @Override
    public void run() {
    // TODO Auto-generated method stub
    super.run();
    ...
    }
}

调查发现插件进行加载时,图标资源与程序不能同时加载,所以提示无法加载资源。因此,尝试将注册图标资源,修改代码如下:

private void createActions() {
// Create the actions
{
file = new Action("&openAction",ResourceManager.getPluginImageDescriptor("TraceViewer","icons/open.gif")) {
    @Override
    public void run() {
    // TODO Auto-generated method stub
    super.run();
    ...
    }
}

其中,”TraceViewer”为应用名称,修改代码以后,重新导出形成插件,打开JAR查看,发现
修改前代码结构
这里写图片描述
修改后代码结构
这里写图片描述

安装并运行插件,工具栏中的图标可以正常显示,如图所示:
这里写图片描述

至此,程序开发告一段落,后续将继续优化,实现图标自动缩放功能。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值