[BIRT 2.3.2(独立)]“跳跃” 问题?
事实是这样的:我制作了一个小型应用程序,其中包含一个与条形图相关的表格(当然是一个 birt 表格……),当我修改表格值时,它会自动更改我的图表(类似于 Excel,但不那么花哨).. 无论如何,
一切都很好......但是当我想让我的图表具有交互性以显示工具提示时(例如),我自然地通知我 设备渲染器 使用以下命令 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) 在 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) 在 org.eclipse.swt.internal.win32.OS.DispatchMessageW(本机方法) 在 org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2371) 在 org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3420) 在 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 更多
我愿意接受任何想法!
Here's the fact : I made a tiny app which consist of a table related to a bar chart (a birt one ... of course), when I modify my table values it automaticaly alter my chart (like Excel but less fancy) ...
Anyway everything works fine ... BUT when I want to make my chart interactive in order to show tooltips (for example) I inform naturaly my
IDeviceRenderer
whit the following command
idr.setProperty( IDeviceRenderer.UPDATE_NOTIFIER, this );
but doing so brings an error when (much later) my code come to
gr.render(idr, gr.build(idr.getDisplayServer(), this.chart, bo, vroum,null));
(Which have never failed before) ...
I feel lost ...
ps:
The error I get are that I get no bars to my chart and receive the following error message :
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(Widget.java:1003)
at 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: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)
Caused by: java.lang.NullPointerException
at org.eclipse.birt.chart.render.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)
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.render.DeferredCacheManager.flushOptions(DeferredCacheManager.java:165)
at org.eclipse.birt.chart.render.AxesRenderer.flushClipping(AxesRenderer.java:3416)
at org.eclipse.birt.chart.render.AxesRenderer.restoreClipping(AxesRenderer.java:3401)
at org.eclipse.birt.chart.render.Bar.renderSeries(Bar.java:1533)
at org.eclipse.birt.chart.render.AxesRenderer.renderPlot(AxesRenderer.java:2181)
at org.eclipse.birt.chart.render.AxesRenderer.render(AxesRenderer.java:314)
at org.eclipse.birt.chart.factory.Generator.render(Generator.java:1368)
... 14 more
I am open to any idea !
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
最后我自己完成了...
因此,当您在 BIRT 上制作图表并希望其具有交互性时,请不要犯以下一些常见错误...
1 几乎不实现任何需要覆盖的内容
我个人忘记重写
并
使用 ICallBackNotifier 实现...
2 不要嵌套您的图表(或者准备好嵌套大多数方法)
我的图表不是直接在我的外壳上,而是嵌套在一堆复合小部件、画布等中......因此我的画布隐藏了我的外壳,这是唯一能够做出反应的外壳我想要我的鼠标控制器。
(有趣的事实:当我(无缘无故)尝试拖动外壳中未与图表重叠的一小部分并将其放在我的条形图上时,我发现了这一切......工具提示弹出了......^^理解事物如何运作的有趣方式:p)
3 别像我一样...
为了一个勉强可以接受的结果需要做很多工作和痛苦;p
希望这样帮助,如果您遇到同样的问题,请随时给我发邮件,我很乐意尽我所能提供帮助^^
Finally I managed it on my own ...
So here are some common mistakes not to make when you make a chart on BIRT and wnat it to be interactive ...
1 Implement barely anything which need to be overriden
I personnaly forgot to override
and
comming with the ICallBackNotifier implementation ...
2 Do not nest your chart (or be prepared to nest most of your methods too)
I had my chart not directly on my shell but nested in a bunch of composites widgets, canvas and such ... Therefore my canvas where hidding my shell which was the only one able to react in the way I wanted to my mouse controller.
(Funny fact : I figured this all out when I (for no reason) tried to drag a small part of my shell which was not overlapped by the chart and drop it on my bars ... There the tooltip poped ... ^^ Funny way to understand how things work :p)
3 Do not be me ...
It is to much work and pain for a barely acceptable result ;p
Hope this help, dont hesitate to mail me if you face the same probleme, I'd be glad to help as much as I can ^^