事实是这样的:我做了一个小应用程序,它由一个与条形图相关的表格组成(一个birt的…当然),当我修改我的表值时,它会自动改变我的图表(就像Excel,但不那么花哨)……
不管怎么说,一切都很好。但是,当我想让我的图表交互以显示工具提示时(例如),我会用下面的命令idr.setProperty( IDeviceRenderer.UPDATE_NOTIFIER,IDeviceRenderer )自然地通知我的idr.setProperty;但是这样做会在(很长一段时间之后)我的代码转到gr.render(idr,gr.build(idr.getDisplayServer(),this.chart,bo,vroum,null));(它们以前从未失败过)时出错……
我感到迷茫..。
ps:我得到的错误是我的图表中没有条形图,并收到以下错误消息: org.eclipse.birt.chart.exception.ChartException at org.eclipse.birt.chart.factory.Generator.render(Generator.java:1373) at clickable.chart.ClickableProto.paintControl(ClickableProto.java:520) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:217) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1027) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1012) at org.eclipse.swt.widgets.Composite.WM_PAINT(Composite.java:1424) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3842) at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:337) at org.eclipse.swt.widgets.Display.windowProc(Display.java:的Widget.java:1003)4541) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2371) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3420) at clickable.chart.ClickableProto.main(ClickableProto.java:151)由: org.eclipse.birt.chart.render.InteractiveRenderer.isColoredByCategories(InteractiveRenderer.java:197) at org.eclipse.birt.chart.render.InteractiveRenderer.getSource(InteractiveRenderer的java.lang.NullPointerException引起org.eclipse.birt.chart.render.InteractiveRenderer.modifyEvent(InteractiveRenderer.java:116) at org.eclipse.birt.chart.device.swt.SwtRendererImpl.fillPolygon(SwtRendererImpl.java:502) at org.eclipse.birt.chart.event.PolygonRenderEvent.fill(PolygonRenderEvent.java:156) at org.eclipse.birt.chart.render.DeferredCache.flushPlanes(DeferredCache.java:499) at org.eclipse.birt.chart.render.DeferredCache.flushOptions(DeferredCache.java:271) at org.eclipse.birt.chart ).java:161.render.DeferredCacheManager.flushOptions(DeferredCacheManager.java:165)在org.eclipse.birt.chart.render.AxesRenderer.flushClipping(AxesRenderer.java:3416)在org.eclipse.birt.chart.render.AxesRenderer.restoreClipping(AxesRenderer.java:3401)在org.eclipse.birt.chart.render.Bar.renderSeries(Bar.java:1533)在org.eclipse.birt.chart.render.AxesRenderer.renderPlot(AxesRenderer.java:2181)在org.eclipse.birt.chart.render.AxesRenderer.render(AxesRenderer.java:314)在org.eclipse.birt.chart.factory.Generator.render(Generator.java:1368) ...还有14个
我对任何想法都持开放态度!
发布于 2009-06-11 10:01:27
最后我自己做到了……
所以这里有一些常见的错误,当你在BIRT上制作一个图表并让它具有交互性时,不要犯这些错误……
1几乎不实现任何需要重写的东西。
我个人忘记了覆盖。
getDesignTimeModel()和
getRunTimeModel()从ICallBackNotifier实现开始...
2不要嵌套你的图表(或者准备好嵌套你的大多数方法)
后来我发现,我的图表不是直接放在shell上,而是嵌套在一堆组合小部件、画布等中……因此,我的画布隐藏了我的外壳,它是唯一能够以我想要的方式对我的鼠标控制器做出反应的外壳。(有趣的事实:当我(无缘无故)试图拖动没有被图表重叠的外壳的一小部分并将其放在我的条形图上时,我弄明白了这一切……工具提示弹出... ^^了解事物工作原理的有趣方法:p)
3不要做我...
他说,要得到一个勉强可以接受的结果,需要付出大量的工作和痛苦;p
希望对您有所帮助,如果您遇到同样的问题,请不要犹豫地发邮件给我,我很乐意尽我所能帮助您^^
https://stackoverflow.com/questions/970244
复制相似问题