【仅供内部供应商使用,不提供对外解答和培训】
【仅供内部供应商使用,不提供对外解答和培训】
学习一门新技术,最快的方式就是模仿,参考帆软工程师精心设计的demo,会帮助您尽快熟悉开发所用的相关接口,并且您可以直接加以修改来实现自己的创意。
第一个demo是使用eChart制作的日历图插件,eChart是我国百度公司设计并开源的图表框架,作为BAT中技术氛围最为浓厚的企业,eChart库是国内最全面使用最为简单的图表框架。
您可以访问eChart的官网来获取详细资料。
我们需要用到之前所提的git工具从开源库中下载demo的源代码。地址为https://git.oschina.net/fanruan/plugins-calendarchart.git。
在C:/developer下右键鼠标选择git gui here,按照图示粘贴克隆地址和目标目录填写demo1
稍事等待,很快就可以完成。接下来需要在IDEA编辑器中操作。
1.打开finereport源码工程,点击编辑器右上角工程结构图标。
2.在弹出的面板中选择左侧的模块,再点击加号选择导入模块。
3.在文件对话框中选中C:\developer\demo1下面的plugins-calendarchart.iml文件,然后如图所示删除红色提示的错误依赖。
4.接着删除designer依赖项。
5.然后在designer模块下增加对plugins-calendarchart模块的依赖。
6.将C:\developer\demo1下面的plugin.xml文件拷贝到您平常使用FineReportV8的工作目录下,通常为C:\FineReport_8.0\WebReport\WEB-INF\plugins这样一个目录,在其下新建一个plugin-demo1的文件夹,拷贝至此。
7.在编辑器中启动程序,在打开的帆软编辑器中插入图表。(工具栏中点击图表的图标)
观察到图表类型中多了“日历活动图表”这一项,是不是很棒。
8.为了体验日历图的效果,我们需要专门的由日期和数值组成的示例数据,以及帆软连接数据库所必须的jar包。
访问百度网盘链接:http://pan.baidu.com/s/1kU6ltJL 密码:qh7j 下载包含这两个文件的压缩包。
9.解压缩后拷贝jar包到C:\developer\lib\report下面。拷贝db数据文件到您平常使用FineReportV8的工作目录下,通常为C:\FineReport_8.0\WebReport\这样一个目录。
10.在编辑器中启动程序(如果之前的设计器没关闭请先关闭),启动后正常新建数据连接。
拷贝原先的FRDemo
将此处选中的文件名称更改为demo数据文件的名称,即“图表插件demo1示例数据”
最后点击确定保存。
11.新建一个模板数据集查询,如图所示进行配置。
12.插入“日历活动图表”类型的图表,拖拽单元格使其保持合适的大小
13.选中图表,在右侧的图表属性表中按图示配置。
14.保存文件后点击预览,即可在弹出的浏览器中看到最终效果,是不是很酷炫呢。
23 Comments
gaoyuan121
1.demo插件里面的代码有问题,麻烦更新下~
2. project里面的代码调用了一个plugin.versionCompareTo函数在lib的包里面不存在,是不是要更新?
finedev
什么样的问题可以在开发者交流群里讨论
Anonymous
报错:
Error:(20, 8) java: com.fr.plugins.calendarchart.custompie.data.pane.ChartConfigPane不是抽象的, 并且未覆盖com.fr.design.mainframe.chart.ChartsConfigPane中的抽象方法acceptType()
解决:
ChartConfigPane类中的accptType()方法有误,需要改成acceptType()
Anonymous
楼上正解
Anonymous
楼上正解
longge
出现了
Error:(20, 54) java: 类型com.fr.design.mainframe.chart.ChartsConfigPane不带有参数
Error:(25, 9) java: 找不到符号
符号: 方法 setLayout(java.awt.BorderLayout)
位置: 类 com.fr.plugins.calendarchart.custompie.data.pane.ChartConfigPane
Error:(28, 9) java: 找不到符号
符号: 方法 add(javax.swing.JPanel,java.lang.String)
位置: 类 com.fr.plugins.calendarchart.custompie.data.pane.ChartConfigPane
Error:(35, 17) java: 无法将类 com.fr.plugins.calendarchart.custompie.data.pane.ChartConfigPane中的方法 update应用到给定类型;
需要: com.fr.chart.chartattr.ChartCollection,com.fr.plugins.calendarchart.custompie.PieChartWithCustomPane
找到: com.fr.chart.chartattr.ChartCollection
原因: 实际参数列表和形式参数列表长度不同
Error:(38, 9) java: 找不到符号
符号: 方法 setSize(int,int)
位置: 类 com.fr.plugins.calendarchart.custompie.data.pane.ChartConfigPane
Error:(39, 9) java: 找不到符号
符号: 方法 setVisible(boolean)
位置: 类 com.fr.plugins.calendarchart.custompie.data.pane.ChartConfigPane
Error:(42, 5) java: 方法不会覆盖或实现超类型的方法
有谁遇到过这些个错误了?请教一下
Anonymous
当配置好了之后才发现FineReport没有Ubuntu的
itaiit
第11步中,Windows电脑不能修改文件名
itaiit
严重: 报表计算中[Name : WorkBook3.cpt] [Parameter : {__LOCALE__ : zh_CN[java.util.Locale], __STREAMCLOSED__ : [java.lang.String], REPORTLET : WorkBook3.cpt[java.lang.String], REPORTNAME : WorkBook3.cpt[java.lang.String]}][Type : page] :
null
java.lang.NullPointerException
at com.fr.chart.chartdata.NormalChartData.dealHugeData(Unknown Source)
at com.fr.chart.chartdata.TopDefinition.createTopChartData(Unknown Source)
at com.fr.chart.chartdata.TableDataDefinition.calcu4ChartData(Unknown Source)
at com.fr.report.core.A.J.dealWithChart(Unknown Source)
at com.fr.report.core.A.J$_D.B(Unknown Source)
at com.fr.report.core.A.J$_D.o(Unknown Source)
at com.fr.report.core.A.J$_D.A(Unknown Source)
at com.fr.report.core.A.J$_D.A(Unknown Source)
at com.fr.report.core.A.J.execute4ECReport(Unknown Source)
at com.fr.report.core.A.J.execute(Unknown Source)
at com.fr.report.worksheet.WorkSheet.execute(Unknown Source)
at com.fr.report.core.sheet.AbstractWorkBookExecutor._execute(Unknown Source)
at com.fr.report.core.sheet.AbstractWorkBookExecutor.execute(Unknown Source)
at com.fr.main.impl.WorkBook.execute(Unknown Source)
at com.fr.log.LogUtils.executeAndLogRecord(Unknown Source)
at com.fr.log.LogUtils.executeAndLogRecord(Unknown Source)
at com.fr.web.cache.ReportCache.getResultWorkBook(Unknown Source)
at com.fr.stable.PageActor.getResultBookFromCacheIfNeed(Unknown Source)
at com.fr.main.impl.WorkBookTemplateDelegate.execute(Unknown Source)
at com.fr.web.core.ReportSessionIDInfor.calResultWorkBook(Unknown Source)
at com.fr.web.core.ReportSessionIDInfor.initBook2Show(Unknown Source)
at com.fr.web.core.ReportSessionIDInfor.getWorkBook2Show(Unknown Source)
at com.fr.web.core.ReportSessionIDInfor.getResultWorkBook(Unknown Source)
at com.fr.web.core.ReportSessionIDInfor.createPageSetChain(Unknown Source)
at com.fr.web.core.ReportSessionIDInfor.getReportPage(Unknown Source)
at com.fr.web.core.A.EC.A(Unknown Source)
at com.fr.web.core.A.EC.A(Unknown Source)
at com.fr.web.core.A.sB.A(Unknown Source)
at com.fr.web.core.A.GB.actionCMD(Unknown Source)
at com.fr.web.core.WebActionsDispatcher.dealForActionCMD(Unknown Source)
at com.fr.web.core.WebActionsDispatcher.dealForActionDefaultCmd(Unknown Source)
at com.fr.web.core.A.pB.process(Unknown Source)
at com.fr.web.core.ReportDispatcher.dealWithOp(Unknown Source)
at com.fr.web.core.ReportDispatcher.dealWeblet(Unknown Source)
at com.fr.web.core.ReportDispatcher.dealWithRequest(Unknown Source)
at com.fr.web.BaseServlet.doGet(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:473)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
at org.mortbay.http.HttpServer.service(HttpServer.java:909)
at org.mortbay.http.HttpConnection.service(HttpConnection.java:820)
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837)
at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
fanxuchao
请问解决了吗
Anonymous
WARNING: null
java.lang.NullPointerException
at com.fr.design.parameter.ParameterDefinitePane.getPreferredSize(ParameterDefinitePane.java:176)
at com.fr.design.gui.icontainer.UIModeControlContainer.<init>(UIModeControlContainer.java:52)
at com.fr.design.mainframe.JWorkBook$1.<init>(JWorkBook.java:108)
at com.fr.design.mainframe.JWorkBook.createCenterPane(JWorkBook.java:108)
at com.fr.design.mainframe.JWorkBook.createCenterPane(JWorkBook.java:80)
at com.fr.design.mainframe.JTemplate.<init>(JTemplate.java:102)
at com.fr.design.mainframe.JTemplate.<init>(JTemplate.java:87)
at com.fr.design.mainframe.JWorkBook.<init>(JWorkBook.java:91)
at com.fr.start.Designer.createNewTemplate(Designer.java:326)
at com.fr.design.mainframe.DesignerFrame.addAndActivateJTemplate(DesignerFrame.java:716)
at com.fr.start.BaseDesigner.showDesignerFrame(BaseDesigner.java:242)
at com.fr.start.BaseDesigner.<init>(BaseDesigner.java:100)
at com.fr.start.Designer.<init>(Designer.java:75)
at com.fr.start.Designer.main(Designer.java:71)
七月 28, 2017 12:22:05 下午
WARNING: null
java.lang.NullPointerException
at com.fr.design.parameter.ParameterDefinitePane.getPreferredSize(ParameterDefinitePane.java:176)
at com.fr.design.gui.icontainer.UIModeControlContainer.<init>(UIModeControlContainer.java:52)
at com.fr.design.mainframe.JWorkBook$1.<init>(JWorkBook.java:108)
at com.fr.design.mainframe.JWorkBook.createCenterPane(JWorkBook.java:108)
at com.fr.design.mainframe.JWorkBook.createCenterPane(JWorkBook.java:80)
at com.fr.design.mainframe.JTemplate.<init>(JTemplate.java:102)
at com.fr.design.mainframe.JTemplate.<init>(JTemplate.java:87)
at com.fr.design.mainframe.JWorkBook.<init>(JWorkBook.java:91)
at com.fr.start.Designer.createNewTemplate(Designer.java:326)
at com.fr.design.mainframe.DesignerFrame.addAndActivateJTemplate(DesignerFrame.java:716)
at com.fr.start.BaseDesigner.showDesignerFrame(BaseDesigner.java:242)
at com.fr.start.BaseDesigner.showDesignerFrame(BaseDesigner.java:257)
at com.fr.start.BaseDesigner.<init>(BaseDesigner.java:100)
at com.fr.start.Designer.<init>(Designer.java:75)
at com.fr.start.Designer.main(Designer.java:71)
怎么解决??
tiantian
请问你的问题解决了吗?我和你遇到一样的问题,我把安装的帆软客户端关闭再重新打开,然后执行那个工程不报错了,再把客户端关掉,重新执行工程,可以成功了
liujin
第6步需要增加一项,将demo1文件夹下的fr-plugin-echarts-1.0.jar粘贴到对应的 FineReport_8.0\lib 目录下,在插件应用里-->我的插件中选择要使用的插件然后启用。使用时启动软件后插件初始状态经常是禁用状态不知道为什么。
Reese
第7步未能出现预期效果
感觉上是因为第6步,plugin.xml拷贝的目的文件夹不对。
按照教程上的做法,应该只有在本地安装的FireReport才能在图表类型中看到“日历活动图表”
编辑器生成的FireReport只能在插件管理中看到安装了日历活动图表,无法在插入图表类型中出现
Atomor
第6步在mac环境下该放到哪个目录? 项目在/Users/xxx/fanruan/project, Demo1目录在/Users/xxx/fanruan/demo1
Atomor
找到了, 在/Applications/FineReport目录
fanxuchao
第7步未能出现预期效果 不能在图表类型中看到“日历活动图表” 求解
Anonymous
将FineReport关闭,然后在IJ里重新run designer
Anonymous
第10步中‘拷贝原先的FRDemo’,我运行起来的FineReport这里没有这个文件,这里是怎么弄的?
finedev
点击那个图标
Anonymous
使用demo1按步骤操作,打开编辑器查看图表并未出现"日历活动图表"这一项
Anonymous
你好,输入select * from 步数;但是他提示找不到 no such table
剧终
刚刚根据提示一步一步的走下来,成功的在设计器上用了这个插件