这是事实:我制作了一个小应用程序,其中包含一个与条形图相关的表(当然是一个...),当我修改我的表值时,它会自动改变我的图表(就像Excel一样但不那么花哨)...
无论如何一切都运行良好...但是当我想让我的图表互动以显示工具提示时(例如)我告知naturaly我的 IDeviceRenderer 使用以下命令 idr.setProperty(IDeviceRenderer.UPDATE_NOTIFIER,this); 但这样做会在(稍后)我的代码出现时带来错误 gr.render(idr,gr.build(idr.getDisplayServer(),this.chart,bo,vroum,null)); (以前从未失败过)......
我感到迷茫......
PS: 我得到的错误是我的图表没有任何条形并收到以下错误消息: org.eclipse.birt.chart.exception.ChartException 在org.eclipse.birt.chart.factory.Generator.render(Generator.java:1373) 在clickable.chart.ClickableProto.paintControl(ClickableProto.java:520) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:217) 在org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) 在org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003) 在org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1027) 在org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1012) 在org.eclipse.swt.widgets.Composite.WM_PAINT(Composite.java:1424) 在org.eclipse.swt.widgets.Control.windowProc(Control.java:3842) 在org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:337) 在org.eclipse.swt.widgets.Display.windowProc(Display.java:4541) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) 在org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2371) 在org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3420) at clickable.chart.ClickableProto.main(ClickableProto.java:151) 引起:java.lang.NullPointerException 在org.eclipse.birt.chart.render.InteractiveRenderer.isColoredByCategories(InteractiveRenderer.java:197) 在org.eclipse.birt.chart.render.InteractiveRenderer.getSource(InteractiveRenderer.java:161) 在org.eclipse.birt.chart.render.InteractiveRenderer.modifyEvent(InteractiveRenderer.java:116) 在org.eclipse.birt.chart.device.swt.SwtRendererImpl.fillPolygon(SwtRendererImpl.java:502) 在org.eclipse.birt.chart.event.PolygonRenderEvent.fill(PolygonRenderEvent.java:156) 在org.eclipse.birt.chart.render.DeferredCache.flushPlanes(DeferredCache.java:499) 在org.eclipse.birt.chart.render.DeferredCache.flushOptions(DeferredCache.java:271) 在org.eclipse.birt.chart.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个
我愿意接受任何想法!
答案 0 :(得分:1)
最后我自己管理了......
所以这里有一些常见的错误,当你在BIRT上制作一张图表并且它是交互式的时候不会犯这个错误......
我个人忘了覆盖
getDesignTimeModel()
和
getRunTimeModel()
使用ICallBackNotifier实现...
我的图表不是直接放在我的shell上,而是嵌套在一堆复合材料小部件,画布等......所以我的画布隐藏了我的shell,这是唯一能够以我想要的方式对我的鼠标做出反应的人控制器。 (有趣的事实:当我(无缘无故)试图拖动我的贝壳的一小部分没有被图表重叠并将其放在我的酒吧上时,我想出了这一切...那里的工具提示poped ... ^^有趣的方式来了解事情是如何运作的:p)
对于几乎不可接受的结果来说,这需要付出很大的努力和痛苦; p
希望得到这个帮助,如果你遇到同样的问题,请不要犹豫,给我发邮件,我很乐意尽我所能帮助^^