1

事实是这样的:我制作了一个小型应用程序,其中包含一个与条形图相关的表格(当然是一个 birt ...... .

无论如何,一切正常......但是当我想让我的图表交互以显示工具提示(例如)时,我自然地通知我的 IDeviceRenderer,使用以下命令 idr.setProperty(IDeviceRenderer.UPDATE_NOTIFIER, this); 但是当(很久以后)我的代码来到 gr.render(idr, gr.build(idr.getDisplayServer(), this.chart, bo, vroum,null)); 时这样做会带来错误 (以前从未失败过)...

我感到失落 ...

ps:我得到的错误是我的图表没有条形图并收到以下错误消息:org.eclipse.birt.chart.factory.Generator.render(Generator.render) 处的 org.eclipse.birt.chart.exception.ChartException 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) 在 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.Display 的 org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:337)。windowProc(Display.java:4541) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2371) at org. clickable.chart.ClickableProto.main(ClickableProto.java:151) 处的 eclipse.swt.widgets.Display.readAndDispatch(Display.java:3420) 原因:org.eclipse.birt.chart.render 处的 java.lang.NullPointerException。 InteractiveRenderer.isColoredByCategories(InteractiveRenderer.java:197) at org.eclipse.birt.chart.render.InteractiveRenderer.getSource(InteractiveRenderer.java:161) at org.eclipse.birt.chart.render.InteractiveRenderer.modifyEvent(InteractiveRenderer.java: 116) 在 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 更多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.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 更多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.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 更多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个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个

我愿意接受任何想法!

4

1 回答 1

1

最后我自己解决了...

因此,当您在 BIRT 上制作图表并使其具有交互性时,请不要犯以下一些常见错误......

1 几乎没有实现任何需要被覆盖的东西

        我个人忘记覆盖

getDesignTimeModel()

getRunTimeModel()

与 ICallBackNotifier 实现一起...

2 不要嵌套图表(或准备嵌套大多数方法)

        我的图表不是直接在我的外壳上,而是嵌套在一堆复合小部件、画布等......因此我的画布隐藏了我的外壳,这是唯一能够以我想要的方式对鼠标控制器做出反应的地方。(有趣的事实:当我(无缘无故地)试图拖动我的外壳的一小部分没有被图表重叠并将其放在我的栏上时,我想通了这一切......工具提示弹出...... ^^了解事物如何运作的有趣方式:p)

3 不要做我...

        对于一个勉强可以接受的结果,这是一项艰巨的工作和痛苦;p

希望对您有所帮助,如果您遇到同样的问题,请不要犹豫,给我发邮件,我很乐意提供尽可能多的帮助^^

于 2009-06-11T10:01:26.653 回答